根据条件转换熊猫数据

时间:2018-10-31 01:12:57

标签: python pandas

我的数据框的格式为:

    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

2 个答案:

答案 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
相关问题