我有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)
答案 0 :(得分:1)
这是因为第一行中有一个零。所以False in [0]
是真的。这是因为第一个索引值为零。
如果您移动索引值
result.index += 1
然后运行你的循环...它不会打印。
现在这解释了为什么会发生这种情况。但是我不会这样做。
我做
for i, row in result.iterrows():
if not row.all():
print(row)