我在下面有数据框,我试图在其中以相同的顺序获取所有产品 一行。
我使用下面的代码和数据框。
df3 = df1.groupby(df1.index)['PartNo'].agg([('product','first'), ('productNew','last')])
Product
88 prod1
88 prod2
88 prod3
89 prod3
89 prod4
但是,我最多可以获得 2 个基于“第一个”和“最后一个”聚合的产品。
我的输出是。
product productNew
88 prod1 prod2
89 prod3 prod4
如何更改代码以使每个订单的 N 个产品在同一行中,如下例所示?
0 1 2.....N
88 prod1 prod2 prod3
89 prod3 prod4 NaN
最佳答案
这是带有索引的pivot
:
(df.assign(col=df.groupby(level=0).PartNo.cumcount())
.pivot(columns='col', values='PartNo'))
输出:
col 0 1 2
88 prod1 prod2 prod3
89 prod3 prod4 NaN
关于python - 如何应用 groupby 并根据年龄获取 N 列 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58662244/