首页 > 解决方案 > Pandas Dataframe 旋转:从列值创建新列

问题描述

如何将Original Dataframe转换为Desired Dataframe

Original DataFrame
--------------------------------------------------
| Key | Value | Month              |
--------------------------------------------------
| 1       | 123 | 1
--------------------------------------------------
| 1       | 456| 2
--------------------------------------------------
| 1       | 789| 3
--------------------------------------------------
| 2       | 111| 1
--------------------------------------------------
| 2       | 222| 2
--------------------------------------------------
| 2       | 333| 3
--------------------------------------------------

Desired DataFrame
--------------------------------------------------
| Key | Month_1 | Month_2 | Month_3             |
--------------------------------------------------
|1  |123    |456    |789|
--------------------------------------------------
|2  |111    |222    |333|
--------------------------------------------------

标签: pythonpandasdataframedata-analysis

解决方案


使用 stack() 和 unstack() 对其进行转换。

df = df.set_index(['Month','Key']).stack().unstack(level=0).reset_index()
df = df.drop('level_1', axis=1)
df.columns = ['Key','Month_1','Month_2','Month_3']

df
    Key Month_1 Month_2 Month_3
0   1   123     456     789
1   2   111     222     333

推荐阅读