gpt4 book ai didi

python - 使用二级索引值将 Pandas 中的列转换为行

转载 作者:行者123 更新时间:2023-12-05 00:44:39 25 4
gpt4 key购买 nike

跟进我之前的问题 here :

import pandas as pd
d = pd.DataFrame({'value':['a', 'b'],'2019Q1':[1, 5], '2019Q2':[2, 6], '2019Q3':[3, 7]})


显示如下:
   value    2019Q1  2019Q2  2019Q3
0 a 1 2 3
1 b 5 6 7

我怎样才能把它变成这个形状:
Year    measure    Quarter    Value
2019 a 1 1
2019 a 2 2
2019 a 3 3
2019 b 1 5
2019 b 2 6
2019 b 3 7

最佳答案

使用 pd.wide_to_long DataFrame.melt :

df2 = df.copy()
df2.columns = df.columns.str.split('Q').str[::-1].str.join('_')

new_df = (pd.wide_to_long(df2.rename(columns = {'value':'Measure'}),
['1','2','3'],
j="Year",
i = 'Measure',
sep='_')
.reset_index()
.melt(['Measure','Year'],var_name = 'Quarter',value_name = 'Value')
.loc[:,['Year','Measure','Quarter','Value']]
.sort_values(['Year','Measure','Quarter']))

print(new_df)
Year Measure Quarter Value
0 2019 a 1 1
2 2019 a 2 2
4 2019 a 3 3
1 2019 b 1 5
3 2019 b 2 6
5 2019 b 3 7

关于python - 使用二级索引值将 Pandas 中的列转换为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59792572/

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