我有一个数据集包括这些列: (订单号、运单号、订单日期、预定日期、类型、运费、收款、工作人员、已 dispatch 、已完成、分配日期、状态)
** 每个订单以两行表示,第一个类型:PICKUP,第二个类型:DELIVERY(具有相同的订单号和一些列,例如:
Unnamed: 0 Order # Waybill # Order date \
0 0 9920000150 NaN 01 Aug, 2019 12:30 PM
1 1 9920000150 NaN 01 Aug, 2019 12:30 PM
Scheduled for Type Delivery Fee Cash collection Worker \
0 01 Aug, 2019 03:00 PM PICKUP NaN NaN Driver1
1 01 Aug, 2019 03:00 PM DELIVERY NaN 135.0 Driver1
Dispatched Completed Assigned On \
0 01 Aug, 2019 01:49 PM 01 Aug, 2019 01:51 PM 01 Aug, 2019 01:42 PM
1 01 Aug, 2019 01:55 PM 01 Aug, 2019 02:08 PM 01 Aug, 2019 01:42 PM
Status
0 Completed
1 Completed
我想将两行合并为一行,这样列就会像这样: 所以一列可以表示为: [订单号,运单号,订单日期,预定日期,送货费,收款,工作人员,派送_取件,完成_取件,指定取件,状态_取件,派送_送货,完成_送货,指定送货,送货状态]
我刚试过,没用 df1 = df.assign(cid = df.groupby(['Order #', 'Waybill #', 'Order date' , 'Scheduled for']).cumcount()).set_index(['Order #', 'cid ']).unstack(-1).sort_index(1,1)
最佳答案
这是一个简单的示例,您可以将其扩展到更多列。我重命名了这些列,这样它们就不会发生冲突。
pickup_df = df[df['type'] == "PICKUP"]
delivery_df = df[df['type'] == "DELIVERY"]
pickup_df = pickup_df[['Order#','Waybill', 'Orderdate']]
delivery_df = pickup_df[['Order#','Waybill', 'Orderdate']]
pickup_df.rename( columns={'Waybill' : 'Pickup Waybill', 'Orderdate' : 'Pickup Orderdate'}, inplace=True)
deliver_df.rename( columns={'Waybill' : 'Delivery Waybill', 'Orderdate' : 'Delivery Orderdate'}, inplace=True)
combined_df = pickup_df.merge(deliver_df, on='Order#', how='left')
关于python - 我如何合并同一数据框/ Pandas 中的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330696/