并排检查两个pandas数据帧的列之间的差异

时间:2018-01-18 15:10:05

标签: python python-3.x pandas

我认为this解决方案可以解决我的问题,但是这里需要检查他的两个数据帧的行是否包含差异。我想对列进行相同的操作。解决方案是ne = (df1 != df2).any(1),但这对我的列没有帮助。是的,我刚检查过,我的两个数据帧都具有完全相同的shape。如果我做df1 == df2,它会给我一个充满真实和虚假的新数据框。查看前100行,看起来大多数列都有相同的例外情况。你怎么能为每一列得到一个真/假?

这是一个玩具示例:

import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),  columns=['a', 'b', 'c', 'd', 'e'])
df2 = df1.copy()
df2.at[3,'d'] += 10

df1

df2

期望的输出:

A True
B True
C True
D False
E True

1 个答案:

答案 0 :(得分:3)

使用DataFrame.all检查每行的所有值是否为True s:

print ((df1 == df2).all())
a     True
b     True
c     True
d    False
e     True
dtype: bool

详情:

print (df1 == df2)

      a     b     c      d     e
0  True  True  True   True  True
1  True  True  True   True  True
2  True  True  True   True  True
3  True  True  True  False  True
4  True  True  True   True  True

也可以使用any解决方案,只需要按~反转输出:

print (~((df1 != df2).any()))

a     True
b     True
c     True
d    False
e     True
dtype: bool