我是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
答案 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