python - 创建虚拟变量和数据整理
问题描述
我有一个看起来像这样的数据框:
我需要创建一个新的数据框,其中学生姓名是索引,课程编号是列,值是 0 或 1,具体取决于学生是否参加了该课程。
我已经尝试过该pd.get_dummies()
功能,但结果太乱了,无法使用,因为我仍然必须压缩学生姓名,使其仅在行中出现一次。
我对如何实现所需的数据框没有任何想法。
解决方案
让我们创建源数据框:
import pandas as pd
df1 = pd.DataFrame({
'Student name': ['Bill Mumy', 'Geraldine Ferraro', 'Geraldine Ferraro', 'Laura Lippman', 'Laura Lippman', 'Edward Koch', 'Celeste Holm'],
'Course number': ['ARTS516', 'ARTS516', 'ARTS516', 'ARTS516', 'ARTS516', 'ARTS401', 'ARTS401']
})
df1.head(10)
输出:
要将学生姓名转换为行并将课程名称转换为列,可以使用函数“pivot_table”:
df2 = df1.pivot_table(index = 'Student name', columns = 'Course number', aggfunc = 'size')
df2.head(10)
输出:
要将 Nan 值替换为零并将数值替换为一个,可以使用函数“applymap”:
df2 = df2.applymap(lambda x: 0 if pd.isna(x) else 1)
df2.head(10)
输出:
推荐阅读
- c# - 如何正确刷新上下文菜单条
- regex - 修复正则表达式中的灾难性回溯
- sharepoint-2013 - 更新空字段以包含值 - 休息 API
- express - 我想通过 eval 函数通过 res.send() 发送结果
- javascript - 如何为映射的对象元素赋予不同的样式?
- python - 如果列包含列表,则复制数据帧行的函数
- python - 如何从发布请求函数 django 视图中检索值。DRF
- python - Pandas Dataframe 问题:如果为 NaN,则减去下一行并添加特定值
- android - 使用导航组件对 DialogFragment 进行动画转换
- python - 使用内联消息在 Python 中写入日志