使用 pandas 将列标题转换为单列

问题描述 投票:0回答:1

我想将元素转换为单列。我尝试过数据透视表和数据透视表,因为我有重复项,所以它不允许,我也尝试过融化

大学 ID # 年份 财务周期 元素#1 元素#2 元素#3
1 2022 前一年 1 美元 3 美元 2 美元
1 2022 当前_年份 2 美元 5 美元 0 美元

这就是我想要得到的

大学 ID # 年份 fin_element 前一年 当前_年份
1 2022 元素#1 1 美元 2 美元
1 2022 元素#2 3 美元 5 美元
1 2022 元素#3 2 美元 0 美元

我已经尝试过了

df_melt = df.melt(id_vars=df.columns[:2], value_vars='element')

将元素移动到列中,但我不知道如何将财务周期转换为列标题

python pandas pivot
1个回答
0
投票

您可以使用

.set_index()
.stack()
(旋转
fin_element
)和
.unstack()
(旋转
financial_period
)来解决此问题,再加上一些其他东西,使其看起来像您想要。

(
    df
    .set_index(['University id #', 'Year', 'financial_period'])
    .rename_axis('fin_element', axis=1)
    .stack()
    .unstack('financial_period')
    .sort_index(axis=1, ascending=False)
    .rename_axis(None, axis=1)
    .reset_index()
)
   University id #  Year fin_element prior_year current_year
0                1  2022  element #1         $1           $2
1                1  2022  element #2         $3           $5
2                1  2022  element #3         $2           $0

此类技术也包含在如何旋转数据框?(过于广泛的规范问题)。另请参阅用户指南:重塑和数据透视表

© www.soinside.com 2019 - 2024. All rights reserved.