我有下表:
UserID Course
1 ENGLISH
1 MATH
2 ENGLISH
2 PHILOSOPHY
3 MATH
我想要下表:
UserID Course1 Course2 Course3
1 ENGLISH MATH
2 ENGLISH PHILOSOPHY
3 MATH
我应该如何处理熊猫?
请注意,我有成千上万的课程,因此为每门课程创建一列是没有意义的。
答案 0 :(得分:3)
您可以添加一个包含'课程编号'的列。 (按用户)然后转动它。
df['CourseNr'] = df.groupby('UserID').cumcount().apply(lambda x: 'Course%i' % (x+1))
给出:
UserID Course CourseNr
0 1 ENGLISH Course1
1 1 MATH Course2
2 2 ENGLISH Course1
3 2 PHILOSOPHY Course2
4 3 MATH Course1
然后:
pd.pivot(df.UserID, df.CourseNr, df.Course)
结果:
CourseNr Course1 Course2
UserID
1 ENGLISH MATH
2 ENGLISH PHILOSOPHY
3 MATH NaN