重塑多索引DF



我有一个数据框架,它的结构是这样的(类似于数据透视表):

<表类> B 2022年12月2023年1月tbody><<tr>A1B1100200A1B2101201

您应该使用pd.melt:

>>> df.melt(id_vars=['A', 'B'], var_name='Month', value_name='Value')
A   B          Month  Value
0  A1  B1  December 2022    100
1  A1  B2  December 2022    101
2  A1  B1   January 2023    200
3  A1  B2   January 2023    201

然后重新排序列,您可以使用这个hack:

>>> df.melt(id_vars=['A', 'B'], var_name='Month', value_name='Value') 
.set_index('Month').reset_index()
Month   A   B  Value
0  December 2022  A1  B1    100
1  December 2022  A1  B2    101
2   January 2023  A1  B1    200
3   January 2023  A1  B2    201

根据@sammywemmy的评论:

var_cols = ['A', 'B']
out = df.melt(id_vars=var_cols, var_name='Month', value_name='Value') 
[['Month'] + var_cols + ['Value']]
print(out)
# Output
Month   A   B  Value
0  December 2022  A1  B1    100
1  December 2022  A1  B2    101
2   January 2023  A1  B1    200
3   January 2023  A1  B2    201

最新更新