如何解决熊猫数据框逻辑循环
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
解决方法
我认为您需要的是group by。
df0.groupby(['ShipmentID','AccessorialCode']).agg({'Cost':'sum'})
,
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。