繁体   English   中英

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

[英]How to get additional and missed data from 2 excels using Python

我有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

采用:

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

如果要将float转换为int,请使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM