如何使用Python从2个Excel中获取其他和丢失的数据

时间:2019-02-06 11:22:23

标签: python pandas

我有2个如下的excel csv文件

df1 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [1, 1, 2]}
df1 = pd.DataFrame(df1, columns=df1.keys())

df2 =  {'Transaction_Name':['SC-002_Homepage', 'SC-001_Signinlink', 'SC-002_Signinlink'], 'Count': [1, 2, 1]}
df2 = pd.DataFrame(df2, columns=df2.keys())

我想比较两个数据,我可以使用下面的方法...

  df_compare = df1.merge(df2, on='Transaction_Name', suffixes=('_df1','_df2'))
df_compare[['Count_df1','Count_df2']] = df_compare[['Count_df1','Count_df2']].astype(float).astype(int)
print (df_compare)

但是在df1中,存在SC-001_Homepage,而在df2中则不存在。使用上面的代码,我没有得到SC-001_Homepage的结果。 df2中也有SC-002_Signinlink,在df1中不可用。结果中也缺少此值。有人可以帮助我如何将这些交易包括在结果中吗?

预期结果应该像...

 Transaction_Name    Count_df1  Count_df2
0   SC-001_Homepage       1       0
1   SC-002_Homepage       1       1
2   SC-001_Signinlink     2       2
3   SC-002_Signinlink     0       1

1 个答案:

答案 0 :(得分:2)

使用:

df1.merge(df2,on=['Transaction_Name'],how='outer',suffixes=('_df1','_df2')).fillna(0)

    Transaction_Name  Count_df1  Count_df2
0    SC-001_Homepage        1.0        0.0
1    SC-002_Homepage        1.0        1.0
2  SC-001_Signinlink        2.0        2.0
3  SC-002_Signinlink        0.0        1.0

如果要将浮点数转换为int,请使用:

df_new[df_new.select_dtypes(['float']).columns]= df_new.select_dtypes(['float']).astype(int)