总结重复行

Summing duplicates rows

我有一个包含 300 多个重复项的数据库,如下所示:

rate    shipment_id original_cost
8.14    500410339210    5.93
7.81    500410339221    5.93
8.53    500410339232    7.07
8.53    500410339243    14.31
2.76    500410345319    68.87
... ... ... ...
8.46    987506030619    7.36
8.46    987506030620    7.36
7.32    987506030630    6.80
27.82   997311250164181 144.44
7.32    997355250064942 19.83

我希望每个副本 shipment_id 只有 original_cost 被加在一起并且费率保持不变。

rate    shipment_id original_cost
3.06    926401748430    2.54
3.06    926401748430    19.60
16.34   926401748430    2.54
16.34   926401748430    19.60

喜欢这些重复项: 它应该看起来像这样:

rate    shipment_id original_cost
3.06    926401748430    22.14
3.06    926401748430    22.14
16.34   926401748430    22.14
16.34   926401748430    22.14

有什么办法吗?

按重复值 (['shipment_id', 'rate']) 分组并在“original_cost”列上使用 transform 来计算总和:

df['original_cost'] = df.groupby(['shipment_id', 'rate'])['original_cost'].transform('sum')

示例输入:

    rate    shipment_id original_cost
0   3.06    926401748430    22.14
1   3.06    926401748430    22.14
2   16.34   926401748430    22.14
3   16.34   926401748430    22.14

示例输出:

    rate   shipment_id  original_cost
0   3.06  926401748430          22.14
1   3.06  926401748430          22.14
2  16.34  926401748430          22.14
3  16.34  926401748430          22.14