python - 如何使用 Python 从 2 个 excel 中获取额外和遗漏的数据
问题描述
我有 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
如果要将浮点数转换为 int,请使用:
df_new[df_new.select_dtypes(['float']).columns]= df_new.select_dtypes(['float']).astype(int)
推荐阅读
- javascript - 仅在此处地图中尽可能避免收费公路
- cron - 创建一个 AWS CRON 字符串,它将在选定的日子里每天运行
- java - 使用基于另一个对象的 getter 的反射调用 setter 方法的方式
- variables - How to add Text variable on GStreamer?
- java - 如何在使用客户端库(java)在谷歌 BigQuery 中加载 csv 数据时跳过标题行
- docker - 带有非默认 docker-compose.yml 文件的 docker-compose ps
- java - 从外部 jar 加载类时出现类加载器错误
- c++ - 声明不被识别的指针数组
- javascript - 如何遍历 JSX 中的对象数组?
- javascript - 如何更新 Firebase 存储中的博客帖子特色图片?