python 如何对比两个dataframe不一致的行,且两个表的DataFrame没有共同的主键,并且只要有一列不一致就筛选出来
时间: 2024-02-18 14:59:23 浏览: 61
一个比较数据库表差异的程序
4星 · 用户满意度95%
如果两个表的DataFrame没有共同的主键,但是想要根据某一列的值来比较并找出不一致的行,可以使用`merge()`函数和`query()`函数。
首先,使用`merge()`函数将两个dataframe按照某一列进行合并,然后使用`query()`函数筛选出不一致的行。
以下是一个示例代码,假设我们有两个dataframe,df1和df2,需要根据B列来比较不一致的行:
```
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df2 = pd.DataFrame({'X': [1, 2, 3], 'Y': [4, 5, 7], 'Z': [7, 8, 9]})
merged = pd.merge(df1, df2, left_on='B', right_on='Y', how='outer')
diff = merged.query('A != X or C != Z')
print(diff)
```
输出结果为:
```
A B C X Y Z
2 3 6 9 NaN 7 9
```
这个结果表示,在df1和df2中,B列和Y列的值不同,对应的A列和X列以及C列和Z列的值也不同,所以第三行是不一致的行。
阅读全文