熊猫数据框逻辑循环

时间:2020-09-11 19:54:19

标签: python pandas data-analysis

df0 = df.filter(['ShipmentID','AccessorialCode','Cost'])

    ShipmentID   AccessorialCode     Cost
0      141687945             LNH    68.65
2      141687945             LNH     7.05
3      141687951             LNH   331.13
5      141687951             LNH    20.97
7      141687951             LNH     7.05
8      141687955             LNH    67.45
9      141687955             LNH    31.75
11     141687955             LNH    47.26
13     141687955             LNH     6.91
14     141687964             LNH   203.13
15     141687964             LNH   229.07
18     141687964             LNH     8.94
19     141687969             LNH  1912.80
22     141687969             LNH    28.29
23     141687972             LNH    65.27
24     141687972             LNH    41.28

我的目标是编写一个逻辑循环,该逻辑循环将增加重复的ShipmentID的成本,然后创建一个新的数据框以删除重复的附件。

df00= df0.loc[df0['AccessorialCode'] == 'LNH']
duplicates = df00[df00.duplicated(['ShipmentID'])]
# I then need to preform an operation to eliminate the duplicates and consolidate the cost

 The desired output should look like this:


    ShipmentID    AccessorialCode  Cost
0   141687945      LNH              75.7
2   141687951      LNH              395.15  
3   141687955      LNH              153.37

2 个答案:

答案 0 :(得分:0)

我认为您需要的是group by。

df0.groupby(['ShipmentID','AccessorialCode']).agg({'Cost':'sum'})

答案 1 :(得分:0)

data = []
for shipment_id in set(df['ShipmentID'].values):
    row = {
        'ShipmentID':shipment_id,
        'AccessorialCode': 'LNH',
        'Cost': sum(df[df['ShipmentID'] == shipment_id]['Cost'].values),
    }
    data.append(row)

df0 = df(data)