pandas.dataframe groupby和转置

时间:2019-11-20 12:28:47

标签: python pandas dataframe pandas-groupby transpose

我是Python和Pandas的初学者。我很难说出我的问题,所以,这是我的数据框示例(也有更多的值和更多的列):

Reason          Grade     
'course'        15
'home'          10
'reputation'    12
'other'         16
'other'         9
'home'          14
'reputation'    10
'reputation'    8
'course'        20
'home'          19
'course'        12
'other'         10
'home'          17
'reputation'    18

而且,我想得到这个:

     course      home     reputation   other
       15         10          12        16
       20         14          10        9
       12         19          8         10
                  17          18

1 个答案:

答案 0 :(得分:0)

GroupBy.cumcount用于Reason列的计数器,而DataFrame.assign用于新列,最后使用DataFrame.pivot-对于不存在的值,添加缺少的值:

df = df.assign(count = df.groupby('Reason').cumcount()).pivot('count','Reason','Grade')
print (df)
Reason  'course'  'home'  'other'  'reputation'
count                                          
0           15.0    10.0     16.0          12.0
1           20.0    14.0      9.0          10.0
2           12.0    19.0     10.0           8.0
3            NaN    17.0      NaN          18.0