我想将元素转换为单列。我尝试过数据透视表和数据透视表,因为我有重复项,所以它不允许,我也尝试过融化
大学 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')
将元素移动到列中,但我不知道如何将财务周期转换为列标题
.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