python - 通过 Python 中的两个变量将面板数据宽转换为长
问题描述
我有一个 Python 数据集,我试图从这样的广泛数据集转换:
ID | 姓名 | 2007年 | 2008年 |
---|---|---|---|
1 | 安迪 | 324 | 412 |
2 | 贝基 | 123 | 422 |
3 | 莉齐 | 332 | 564 |
对于这样的长数据集。
ID | 姓名 | 年 | 变量 |
---|---|---|---|
1 | 安迪 | 2007年 | 324 |
1 | 安迪 | 2008年 | 412 |
2 | 贝基 | 2007年 | 123 |
2 | 贝基 | 2008年 | 422 |
3 | 莉齐 | 2007年 | 332 |
3 | 莉齐 | 2008年 | 564 |
不幸的是,由于每年有两个标识列和多个观察值,因此无法使用数据透视。任何帮助将非常感激。
解决方案
不能使用pivot
,因为这实际上是一个melt
操作:
out = (df.melt(
id_vars=["ID", "Name"],
value_vars=["2007", "2008"],
var_name="Year",
value_name="Var"
)
.sort_values(["ID", "Year"]))
print(out)
ID Name Year Var
0 1 Andy 2007 324
3 1 Andy 2008 412
1 2 Becky 2007 123
4 2 Becky 2008 422
2 3 Lizzie 2007 332
5 3 Lizzie 2008 564
推荐阅读
- java - HttpDestination + TIMED_WAITING 每个目的地排队的 SOLR 最大请求数超过 3000
- python - 如何在 python 中使用不平衡数据集获得更好的精度和召回率
- azure - 使用 OIDC 将 Azure 与 OKTA 集成
- node.js - 如何正确配置 apollo graphql + node.js 到谷歌应用引擎
- salesforce - 帐户不应有重复的联系人
- sql - Oracle SQL 显示来自同一个表的匹配数据
- python - Django - 如何构造一个子查询来深入两个外键?
- python - 为什么我的 python kivy 登录表单不起作用?
- excel - 是否有公式可以表示每天单元格值的净变化?
- javascript - 如何从 JavaScript 调用 ASP.NET 函数?