Python:基于同一组的多个条目进入不同的列
我有一个dataframe产品。产品外观如下:Python:基于同一组的多个条目进入不同的列,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有一个dataframe产品。产品外观如下: Cust_ID Prod Time_of_Sale A Bat 1 A Ball 2 A Lego 3 B Lego 3 B Lego 9 B Ball 11 B Bat 11 B Bat 13 C Bat 2 C Lego
Cust_ID Prod Time_of_Sale
A Bat 1
A Ball 2
A Lego 3
B Lego 3
B Lego 9
B Ball 11
B Bat 11
B Bat 13
C Bat 2
C Lego 2
我想把它改成这样:
Cust_ID Bat Bat Ball Lego Lego
A 1 NaN 2 3 NaN
B 11 13 11 3 9
C 2 NaN NaN 2 NaN
我一直在玩products.groupby,它并没有真正把我带到任何地方。感谢您的帮助
目的是“可视化”每个客户购买每件商品的顺序。我有1000多个独特的客户
编辑:
我看到一个用户建议我通过。但这不起作用,因为我的列有重复的值。这对于Prod上的重复值有点棘手。基本上,您需要一个cumcount和pivot:
new_df = (df.set_index(['Cust_ID','Prod',
df.groupby(['Cust_ID', 'Prod']).cumcount()])
['Time_of_Sale']
.unstack(level=(1,2))
.sort_index(axis=1)
)
new_df.columns = [x for x,y in new_df.columns]
new_df = new_df.reset_index()
输出:
Cust_ID Ball Bat Bat Lego Lego
0 A 2.0 1.0 NaN 3.0 NaN
1 B 11.0 11.0 13.0 3.0 9.0
2 C NaN 2.0 NaN 2.0 NaN
注意:虽然支持重复的列名,但在Pandas中应避免重复。不完全如此。我浏览了一下这一页,看看是否有。枢轴列的一个问题是它们通常是唯一的。如果您可以看到我的第二个表,您会看到这些列不是唯一的。我的意思是熊猫不允许这样做,我必须将重复项重命名为bat1、bat2,但即使如此,它们还是从原始表的bat中获取值