pandas 数据帧多行查询
在Pandas中,多行查询可以通过多种方式实现,以下是一些常见的方法:

1. 使用`loc`和`iloc`函数进行条件查询:

```python
import pandas as pd

# 创建一个数据帧
df = pd.DataFrame({
    'Name': ['Tom', 'Nick', 'John', 'Peter'],
    'Age': [20, 21, 19, 18],
    'City': ['New York', 'London', 'Tokyo', 'Sydney']
})

# 使用loc函数进行查询
result = df.loc[df['Age'] > 20]

print(result)  # 输出:   Name  Age City
               # 1   Nick   21  London
               # 2    John   19   Tokyo
```

2. 使用`query`函数进行高级查询(需要安装pandas-query库):

```python
import pandas as pd

# 安装pandas-query库,可以通过pip install pandas-query命令进行安装
!pip install pandas-query

# 创建一个数据帧
df = pd.DataFrame({
    'Name': ['Tom', 'Nick', 'John', 'Peter'],
    'Age': [20, 21, 19, 18],
    'City': ['New York', 'London', 'Tokyo', 'Sydney']
})

# 使用query函数进行查询
result = df.query("Age > 20")

print(result)  # 输出:   Name  Age City
               # 1   Nick   21  London
               # 2    John   19   Tokyo
```

3. 使用`apply`函数进行逐行操作:

```python
import pandas as pd

# 创建一个数据帧
df = pd.DataFrame({
    'Name': ['Tom', 'Nick', 'John', 'Peter'],
    'Age': [20, 21, 19, 18],
    'City': ['New York', 'London', 'Tokyo', 'Sydney']
})

# 使用apply函数进行查询,这里假设我们想要查找年龄大于20的行
result = df[df.apply(lambda x: x['Age'] > 20, axis=1)]

print(result)  # 输出:   Name  Age City
               # 1   Nick   21  London
               # 2    John   19   Tokyo
```

测试用例:

```python
import pandas as pd

df = pd.DataFrame({
    'Name': ['Tom', 'Nick', 'John', 'Peter'],
    'Age': [20, 21, 19, 18],
    'City': ['New York', 'London', 'Tokyo', 'Sydney']
})

# 测试loc函数
assert df.loc[df['Age'] > 20].equals(pd.DataFrame({
    'Name': ['Nick', 'John'],
    'Age': [21, 19],
    'City': ['London', 'Tokyo']
}))

# 测试query函数
assert df.query("Age > 20").equals(pd.DataFrame({
    'Name': ['Nick', 'John'],
    'Age': [21, 19],
    'City': ['London', 'Tokyo']
}))

# 测试apply函数
assert df[df.apply(lambda x: x['Age'] > 20, axis=1)].equals(pd.DataFrame({
    'Name': ['Nick', 'John'],
    'Age': [21, 19],
    'City': ['London', 'Tokyo']
}))

print("All tests passed!")
```

应用场景:在数据清洗和数据分析中,有时我们需要根据特定的条件选择多行进行进一步处理。例如,我们可能会在分析客户行为数据时,只对年龄超过18岁的用户进行深入分析。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐