This question already has answers here:
How to pivot a dataframe
                                
                                    (2个答案)
                                
                        
                                去年关闭。
            
                    
我有一个多列数据框,并希望通过基于另一列对它们进行分组来分离特定列中的数据。

这是一个例子:

ID     Name   Score
1      John   100
2      Lisa   80
3      David  75
4      Lisa   92
5      John   89
6      Lisa   72


我希望我的输出是这样的:

index  John  Lisa  David
0      100   80    75
1      89    92    NaN
2      NaN   72    NaN


我了解我可以轻松使用以下代码:

df[df['Name'] == 'John]]并分隔约翰在数据框中的所有分数,但是由于我的数据框非常大,因此我想要一个干净的输出,如我在此处所示。

最佳答案

您可以使用pivot_table。您可以生成通过Name并采用cumcount对数据帧进行分组分组所需的索引:

ix = df.groupby('Name').cumcount()
pd.pivot_table(df,'Score', ix, 'Name')

Name  David   John  Lisa
1      75.0  100.0  80.0
2       NaN   89.0  92.0
3       NaN    NaN  72.0

08-20 03:47
查看更多