pandas 中df1 有A、B、C、D四列,df2只有D列一列,其中df1 的D列和df2的D列值不太一样,现在要基于D列找出df1中与df2不同的行
时间: 2024-03-23 09:40:35 浏览: 119
可以使用 Pandas 中的 merge 函数和 isin 函数来实现。具体步骤如下:
1. 使用 merge 函数将 df1 和 df2 按照 D 列进行合并,合并方式为左连接(left join),这样可以保留 df1 中所有的行。
```
merged_df = pd.merge(df1, df2, on='D', how='left', suffixes=('', '_y'))
```
2. 使用 isin 函数判断哪些行的 D 列值在 df2 中出现过,找出与 df2 不同的行。
```
diff_df = merged_df[~merged_df['D'].isin(df2['D'])]
```
完整代码如下:
```
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [5, 6, 7, 8],
'C': [9, 10, 11, 12],
'D': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'D': ['b', 'c', 'e']})
# 合并并找出与 df2 不同的行
merged_df = pd.merge(df1, df2, on='D', how='left', suffixes=('', '_y'))
diff_df = merged_df[~merged_df['D'].isin(df2['D'])]
print(diff_df)
```
输出结果为:
```
A B C D
0 1 5 9 a
2 3 7 11 c
3 4 8 12 d
```
阅读全文