pandas - 合并相似组上的两个数据框
问题描述
我有两个包含相似组的数据框,例如:
dataframe1:
group Rank_real
1 2
1 1
1 3
2 2
2 1
dataframe2:
group Rank_predicted
2 1
2 2
1 1
1 2
1 3
我想在最终结果如下所示的列组上合并这两个数据框:
Result:
group Rank_real Rank_predicted
1 2 1
1 1 2
1 3 3
2 2 1
2 1 2
我试着用
pd.merge(dataframe1, dataframe2, on='group')
但是,我得到:
Result:
group Rank_real Rank_predicted
1 2 1
1 2 2
1 2 3
1 1 1
1 1 2
1 1 3
1 3 1
1 3 2
1 3 3
2 2 1
2 2 2
2 1 1
2 1 2
我怎样才能解决这个问题?
解决方案
我们可以groupby
添加cumcount
额外的merge
密钥
out = df1.assign(key=df1.groupby('group').cumcount()).\
merge(df2.assign(key=df2.groupby('group').cumcount()),on=['group','key'])
Out[68]:
group Rank_real key Rank_predicted
0 1 2 0 1
1 1 1 1 2
2 1 3 2 3
3 2 2 0 1
4 2 1 1 2
推荐阅读
- javascript - 如何实现这个 svg 动画?
- javascript - 在wordpress中单击一个后禁用多个recaptchas
- polymer - Polymer 和 LitElement 共存
- typescript - 基于接口实现类方法
- android - 我的导航视图未显示我的菜单项
- c - 在c中使用while循环查找a1z,b2y,c3x,...,...,....,nnn的斐波那契数列的程序?
- python - 如何在 cloudant-python 中选择特定字段进行查询?
- python - 在 Dask 中处理多个 csv
- php - 在 MySQL 中对通过 UNION 连接的 SUM 进行求和,并在 PHP 中使用 ECHO 显示
- python - 无法构造反向牛顿多项式