我的数据框的格式为:
order_id product_id
0 2 33120
1 4 28985
2 4 9327
3 7 45918
4 14 30035
我想转换或创建一个新的数据框,其中每个order_id的所有product_id都在同一行中。并最终写入csv。
product_id1 product_id2 ...
0 33120
1 28985 9327
2 45918
3 30035
答案 0 :(得分:1)
这是一个pivot
问题,您只需要cumcount
创建密钥
newdf=df.assign(key=df.groupby('order_id').cumcount()).pivot('order_id','key','product_id').fillna('')
newdf
Out[124]:
key 0 1
order_id
2 33120.0
4 28985.0 9327
7 45918.0
14 30035.0
#newdf.to_csv('your.csv')
答案 1 :(得分:1)
另一种方法(虽然不如@ W-B理想)是使用apply
:
df.groupby('order_id')['product_id'].apply(lambda x: pd.Series(x.values)).unstack()
0 1
order_id
2 33120.0 NaN
4 28985.0 9327.0
7 45918.0 NaN
14 30035.0 NaN