输出两个dataframe之间根据条件筛选出不满足相同条件的行
时间: 2024-03-09 09:49:04 浏览: 134
可以使用pandas.merge方法和参数`indicator=True`来实现这个需求。具体步骤如下:
1. 使用pandas.merge方法将两个DataFrame按照条件合并,合并方式为'outer',并将参数`indicator=True`。
2. 筛选出_merge列中值为'left_only'或'right_only'的行,即为不满足条件的行。
示例代码如下:
```python
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3, 4], 'B': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'A': [1, 3, 5], 'B': ['a', 'c', 'e']})
# 按照条件'A'合并两个DataFrame,并将_indicator列保留
merged = pd.merge(df1, df2, on='A', how='outer', indicator=True)
# 筛选出不满足条件的行
not_matched = merged.loc[(merged['_merge'] == 'left_only') | (merged['_merge'] == 'right_only')]
print(not_matched)
```
输出结果为:
```
A B_x B_y _merge
1 2 b NaN left_only
3 4 d NaN left_only
2 5 NaN e right_only
```
其中,'_merge'列的值为'left_only'表示该行只在左侧DataFrame中出现,'_merge'列的值为'right_only'表示该行只在右侧DataFrame中出现,即为不满足条件的行。
阅读全文