Pandas itertuples第一行返回true,即使找不到匹配

时间:2016-11-23 06:25:41

标签: python pandas dataframe

我有2个csv文件,其行完全相同,如下所示:

  

ASAS,asafdfdd,fgffgdvnufg,rterrtrrtr,wewewtyuhe,yuuiiyuyuy,uiuiui9u   absas,a2assafdfdd,fgffgedkfg,rtdfrtrrtr,wewewuikjhe,yuuiuiyouyuy,ui7u8iuiu   asbas,asasdfdfdd,fgffgfpoftg,rtrjktrrtr,wewewuyihe,yuyuyyupuy,uiu7iuiu   asabs,asafddffdd,fgffg2floig,rtrtrcxcrtr,weweyjunwe,yuyuyumy,uiui6uiu   asasbb,asafddfdd,fgffgdfkfg,rtrtrjkhrtr,wewewdfxe,yuyuyuny,uiui5uiu   absbas,asafdrtfdd,fgffgvbfg,rtrt3rrcxvtr,wewedfcwe,yuycuyuy,uiu4iuiu

我分别在名为df1和df2的2个数据帧中读取了这2个csv文件。当我result = (df1==df2)时,我在结果中得到另一个数据帧,其中匹配为True / False值(在这种情况下为True)。

现在,当使用下面的代码时,即使该元组中没有'False'值,也会显示第一行。

for row in result.itertuples():    
    if(False in row):        
        print (row)

这是为什么?我需要在这里做些不同的事吗?

整个代码可供参考:

import pandas as pd

df1 = pd.read_csv('test3.csv',  header=None)
df2 = pd.read_csv('test4.csv', header=None)

result = (df1==df2)
print result
for row in result.itertuples():
    if(False in row):
        print (row)

1 个答案:

答案 0 :(得分:1)

这是因为第一行中有一个零。所以False in [0]是真的。这是因为第一个索引值为零。

如果您移动索引值

result.index += 1

然后运行你的循环...它不会打印。

现在这解释了为什么会发生这种情况。但是我不会这样做。

我做

for i, row in result.iterrows():
    if not row.all():
        print(row)