我认为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
期望的输出:
A True
B True
C True
D False
E True
答案 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