python - 如何重塑数据框以便在 python 中获得所需的输出?
问题描述
我有一个这种格式的数据框。
我有这个数据框:
id 2005-01-07 2008-01-07 ...
0 1Y 1.0 1.6
1 5Y 1.0 1.7
2 6Y 6.0 1.0
3 10Y 2.0 7.1
4 30Y 5.5 8.6
我想将其转换为:
id Date number
0 1Y 2005-01-07 1.0
1 1Y 2008-01-07 1.6
2 5Y 2005-01-07 1.0
3 5Y 2008-01-07 1.7
4 6Y 2005-01-07 6.0
5 6Y 2008-01-07 1.0
6 10Y 2005-01-07 2.0
7 10Y 2008-01-07 7.1
8 30Y 2005-01-07 5.5
9 30Y 2008-01-07 8.6
...
是否可以在 python 中实现此输出?我尝试使用transpose()
但replace
无法达到所需的输出
@mechanical_meat 的回答:
df = pd.melt(df, id_vars=['id'], var_name='Date', value_name='number')
解决方案
使用pd.melt
我们可以通过一个简单的步骤从宽格式变为长格式:
df = pd.melt(df, id_vars=['id'], var_name='Date', value_name='number')
在这里特别有用的原因.melt()
是您正在取消旋转而不是旋转:
- 换句话说,未在
id_vars
关键字参数中标识的剩余列然后被取消透视到行中。
如果您需要返回原始格式,则可以使用.pivot()
:
df.pivot(values='number',index='id',columns='Date')
推荐阅读
- javascript - 如何在 Qualtrics 中使用 moment js 提供关于睡眠日记的个性化反馈?
- c++ - 如何为我的 application.exe/executable QT 设置自定义图标,我使用了 Visual Studio 2019
- html - HTML页面大小,高度换行内容
- drools - 跨环境的规则移动/提升(比如 UAT 到生产环境)
- c# - 向不可变类型添加信息的公认模式是什么?
- python - 在 Python 3 中捕获特定的 OSError 异常
- node.js - 如何正确地将模块导入文件(Node.js)
- python - 在for循环python中运行elif语句
- android - android kotlin 中的 http 请求
- javascript - Reactjs 中的事件冒泡