在pandas dataframe

时间:2017-12-12 17:07:26

标签: python pandas jupyter-notebook

我正在按行名称比较2个数据框,我想得到与例子不匹配的行的名称:

check = sum(df1.index!=df2.index)
if check:
    raise TypeError("Not Match")
else:
    print("All OK")

当索引不匹配时,我想打印不匹配的行的第一个实例。我已尝试使用如下所示的print语句,但它没有执行。

    check = sum(df1.index!=df2.index)
if check:
    print(df1.index)
    raise TypeError("Not Match")
else:
    print("All OK")

1 个答案:

答案 0 :(得分:2)

声明 -

df1.index != df2.index

返回bools的numpy数组。让我们暂时保留这个。工作可能需要稍作改动 -

m = df1.index.values != df2.index.values

要在True中获取m(不匹配)的计数,请致电sum -

if m.sum():
    raise TypeError(...)

要获得第一个不匹配的实例,使用m索引:

print(df1[m].iloc[0])

感谢MaxU,使用argmax -

这是一个更好的解决方案
print(df1[m.argmax()])