在 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中文网其他相关文章!