Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:基于同一组的多个条目进入不同的列_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python:基于同一组的多个条目进入不同的列

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

我有一个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     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中获取值