pandas 数据帧多行查询
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岁的用户进行深入分析。
更多推荐
所有评论(0)