展平并在中创建新列

2024-06-03 10:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下表:

UserID Course
1      ENGLISH
1      MATH  
2      ENGLISH
2      PHILOSOPHY
3      MATH

我想要下表:

UserID Course1  Course2     Course3
1      ENGLISH  MATH 
2      ENGLISH  PHILOSOPHY
3      MATH  

我应该怎样对待熊猫呢?你知道吗

请注意,我有成千上万的课程,所以为每门课程创建一列是没有意义的。你知道吗


Tags: englishmath课程意义useridcoursephilosophycourse2
1条回答
网友
1楼 · 发布于 2024-06-03 10:43:02

您可以添加一个包含“课程编号”(每个用户)的列,然后对其进行透视。你知道吗

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

相关问题 更多 >