python - 数据集将多个相关记录转换为单个记录
问题描述
我在学生分数中有数字数据,我希望每个学生都有一个记录,他的所有相关数据都分布在许多记录中。
df = pd.DataFrame([('Adel', "Subj1", 3.50 ,2.57),
('Adel', "Subj2", 2.75 ,3.6 ),
('Alexa',"Subj1", 1.75 ,3.25) ,
('Alexa',"Subj3", 3.15 ,2.25) ],
columns=('Name', "Subj","Med", "Ach" ))
我开发了一个很长的循环语句并在下面的表格中,但我认为可能有更好的方法。
这样的数据透视表有什么捷径吗?当然,我可能缺少数据,因为并非所有学生都参加所有课程。
解决方案
你可以做:
df2=df.pivot(index="Name", columns="Subj", values=["Med", "Ach"]).swaplevel(0,1, axis=1)
#flatten index - I assumed that's what you're going for:
df2.columns=["_".join(el) for el in df2.columns]
输出:
Subj1_Med Subj2_Med ... Subj2_Ach Subj3_Ach
Name ...
Adel 3.50 2.75 ... 3.6 NaN
Alexa 1.75 NaN ... NaN 2.25
推荐阅读
- javascript - 使用 N/A 值对动态列进行排序
- asp.net-core - 如何在 ASP.NET Kestrel 服务器中设置 TCP 积压
- angular-ngselect - 如何在 @ng-select/ng-select 模块中删除 ng-select-top
- php - 使用高效的缓存策略灯塔 Laravel 服务静态资产
- python - 阶段失败时的 Spark FileAlreadyExistsException
- python - 比较两个不相等的熊猫系列中的数据并针对第一帧中的一列进行插值,
- ios - 如果在未选择 tableView 单元格时按下按钮,则显示警报消息
- ruby-on-rails - Rails:重复记录,一些关联,仅其他连接表
- php - 如何在codeigniter中做restful api更改密码?
- c - Visual Studio 2019 社区版可以强制执行严格的 ANSI C 合规性吗?