如何逐个单元比较两个数据帧?

xkc*_*kcd 5 python pandas

我有两个数据帧,其中包含来自单个源(csv)不同部分的 corr() 的结果。现在我想比较两个数据帧中的所有值,以检查它们是否相等或者是否落在特定范围内。所以伪代码会是这样的:

df1['column1']['row1'] == df2['column1']['row1']
Run Code Online (Sandbox Code Playgroud)

在 Pandas 中是否有一种简单的方法可以做到这一点?

Akh*_*iki 1

你有很多方法可以做到这一点。我遵循的方法之一如下:

df3 = df2[df1.ne(df2).any(axis=1)]
Run Code Online (Sandbox Code Playgroud)

df3 将列出至少有一个单元格不匹配的所有行。仅供参考,ne这里代表not equal.

例子:

创建 df1

data = [['batman', 10], ['joker', 15], ['alfred', 14]]
df1 = pd.DataFrame(data, columns = ['Name', 'Age'])
Run Code Online (Sandbox Code Playgroud)

创建与 df1 略有不同的 df2

data = [['batman', 10], ['joker', 6], ['alfred', 17]]
df2 = pd.DataFrame(data, columns = ['Name', 'Age'])
Run Code Online (Sandbox Code Playgroud)

提取至少有一个不相等单元格的行

df3 = df2[df1.ne(df2).any(axis=1)]
df3
Run Code Online (Sandbox Code Playgroud)

打印结果 df3

   Name  Age
1  joker    6      // the age is different in df1 and df2 for joker
2  alfred   17      // the age is different in df1 and df2 for alfred 
Run Code Online (Sandbox Code Playgroud)

现在,从生成的数据框中,您可以根据您的业务案例检查范围要求。