如何在 Pandas 中将宽数据转换为长格式?

Barbara Streisand
发布: 2024-11-14 21:36:02
原创
771 人浏览过

How to Transform Wide Data to Long Format in Pandas?

在 Pandas 中将宽数据重塑为长格式

在数据操作领域,将数据从宽格式重塑为长格式通常会出现为必要性。考虑以下 pandas 数据框:

AA BB CC
05/03 1 2 3
06/03 4 5 6
07/03 7 8 9
08/03 5 7 1

将其转换为所需的长格式:

| AA | 05/03 | 1 |
| AA | 06/03 | 4 |
| AA | 07/03 | 7 |
| AA | 08/03 | 5 |
| BB | 05/03 | 2 |
| BB | 06/03 | 5 |
| BB | 07/03 | 8 |
| BB | 08/03 | 7 |
|抄送 | 05/03 | 3 |
|抄送 | 06/03 | 6 |
|抄送 | 07/03 | 9 |
|抄送 | 08/03 | 1 |

我们使用 pandas.melt 或 pandas.DataFrame.melt 函数,它可以优雅地将宽数据转换为长格式。

import pandas as pd

df = pd.DataFrame({
    'date' : ['05/03', '06/03', '07/03', '08/03'],
    'AA' : [1, 4, 7, 5],
    'BB' : [2, 5, 8, 7],
    'CC' : [3, 6, 9, 1]
}).set_index('date')

df = df.reset_index()
pd.melt(df, id_vars='date', value_vars=['AA', 'BB', 'CC'])
登录后复制

或者,可以通过调用省略 reset_index 步骤使用ignore_index=False:

dfm = df.melt(ignore_index=False).reset_index()
登录后复制

融化,得到所需的长格式:

date variable value
0 05/03 AA 1
1 06/03 AA 4
2 07/03 AA 7
3 08/03 AA 5
4 05/03 BB 2
5 06/03 BB 5
6 07/03 BB 8
7 08/03 BB 7
8 05/03 CC 3
9 06/03 CC 6
10 07/03 CC 9
11 08/03 CC 1

此转换可以根据共享日期和列名称与其他数据帧进行高效合并。

以上是如何在 Pandas 中将宽数据转换为长格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板