python - Pandas:行值作为列
问题描述
我有一个看起来像这样的 DataFrame
CourseID StudentID
0 100 (Student:1)=001
1 102 (Student:1)=007;(Student:2)=006
2 103 NaN
3 106 (Student:1)=007
4 107 NaN
5 108 (Student:1)=005;(Student:2)=031;(Student:3)=011
我想按如下方式构造 DataFrame:
CourseID Student_1 Student_2 Student_3
0 100 001 NaN NaN
1 102 007 006 NaN
2 103 NaN NaN NaN
3 106 007 NaN NaN
4 107 NaN NaN NaN
5 108 005 031 011
关于将 DataFrame 转换为所需输出的最佳方法的任何建议?
解决方案
让我们试试str.get_dummies
,然后修改输出并join
返回
s=df.StudentID.str.get_dummies(';')
s=s.T.mul(pd.Series(s.columns.str.split('=').str[1],index=s.columns),axis=0).T
s.columns=s.columns.str.split('=').str[0].str.replace(':','_')
df=df.join(s)
推荐阅读
- swiftui - SwiftUI 大小以适应或自动换行导航标题
- reactjs - 我是否正确理解了 next-redux-wrapper 的行为?
- java - 在哪里可以找到适用于 Java 的 Google App Engine API 发行说明
- android - 使用 viewBinding 时 SetTheme 不起作用
- javascript - next-redux-wrapper 中的空状态
- php - 如何在不破坏图像、CSS 和 JavaScript 的情况下实现友好的 URL?
- python - 用硒在谷歌表格中选择日期
- javascript - 如何在未聚焦的选项卡中运行 JS 脚本?
- ruby - 访问外部上下文的自我
- java - Android Mixing Java and Kotlin,找不到Kotlin文件