gpt4 book ai didi

python - 在 Pandas 中 reshape 宽到长

转载 作者:太空狗 更新时间:2023-10-29 17:39:37 24 4
gpt4 key购买 nike

假设我在 pandas 中有以下数据框:

             AA  BB  CC     
date
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
CC 05/03 3
CC 06/03 6
CC 07/03 9
CC 08/03 1

我该怎么做?

从宽到长转换的原因是,在下一阶段,我想根据日期和初始列名(AA、BB、CC)将此数据框与另一个数据框合并。

最佳答案

使用pandas.meltpandas.DataFrame.melt由宽变长:

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

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

要转换,我们只需要重置索引然后熔化:

df = df.reset_index()
pd.melt(df, id_vars='date', value_vars=['AA', 'BB', 'CC'])

.melt 之后使用 .reset_index,无需指定 value_vars

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

关于python - 在 Pandas 中 reshape 宽到长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36537945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com