我有两个数据框,如下所示。
我想按照以下规则组合这两个数据帧。 首先,我想重点关注 A、B、C 和 D 列。 如果两个数据帧中的这些值都相同,我想计算该值的总和。另外,对于 E 列,我想保留 df1 值。 预期结果如下图。
如果您能提供帮助,我将非常感激。 非常感谢您的帮助。
最佳答案
concat + groupby + sort_values
一种方法是连接数据帧,执行 groupby
操作,然后对值进行排序:
df1 = pd.DataFrame([[100, 'aaa', 'bbb', 'ccc', 'ddd', 1],
[50, 'eee', 'fff', 'ggg', 'hhh', 2],
[10, 'iii', 'jjj', 'kkk', 'lll', 3]],
columns=['Value', 'A', 'B', 'C', 'D', 'E'])
df2 = pd.DataFrame([[80, 'aaa', 'bbb', 'ccc', 'ddd', 4],
[60, 'ej', 'feuajo', 'eiwo', 'fuasdhf', 5],
[1, 'gheuha', 'daj;f', 'dfua', 'hfdusu', 6]],
columns=['Value', 'A', 'B', 'C', 'D', 'E'])
res = pd.concat([df1, df2], axis=0, ignore_index=True)\
.groupby(['A', 'B', 'C', 'D'])\
.agg({'Value': 'sum', 'E': 'first'})\
.reset_index()\
.sort_values('Value', ascending=False)
print(res)
A B C D Value E
0 aaa bbb ccc ddd 180 1
2 ej feuajo eiwo fuasdhf 60 5
1 eee fff ggg hhh 50 2
4 iii jjj kkk lll 10 3
3 gheuha daj;f dfua hfdusu 1 6
关于python - 如何在特定情况下组合数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50731253/