我有下表:
| 指數 | 姓名 | 價值1 | 價值2 | 價值3 |
|---|---|---|---|---|
| 1 | 美國廣播公司 | 136 | 137 | 169 |
| 2 | cde | 164 | 190 | 126 |
| 3 | 英國電力公司 | 130 | 179 | 136 |
| 4 | mno | 181 | 108 | 165 |
值列對應于 2021-2019 年。我想為相應年份的每個月復制每個值。換句話說,我想將它重組為這樣的 DataFrame:
| 指數 | 姓名 | 月 | 年 | 價值 |
|---|---|---|---|---|
| 1 | 美國廣播公司 | 1 | 2021 | 136 |
| 1 | 美國廣播公司 | 2 | 2021 | 136 |
| 1 | 美國廣播公司 | 3 | 2021 | 136 |
| 1 | 美國廣播公司 | 4 | 2021 | 136 |
| 1 | 美國廣播公司 | 5 | 2021 | 136 |
| 1 | 美國廣播公司 | 6 | 2021 | 136 |
| 1 | 美國廣播公司 | 7 | 2021 | 136 |
| 1 | 美國廣播公司 | 8 | 2021 | 136 |
| 1 | 美國廣播公司 | 9 | 2021 | 136 |
| 1 | 美國廣播公司 | 10 | 2021 | 136 |
| 1 | 美國廣播公司 | 11 | 2021 | 136 |
| 1 | 美國廣播公司 | 12 | 2021 | 136 |
| 1 | 美國廣播公司 | 1 | 2020 | 137 |
| 1 | 美國廣播公司 | 2 | 2020 | 137 |
| 1 | 美國廣播公司 | 3 | 2020 | 137 |
| 1 | 美國廣播公司 | 4 | 2020 | 137 |
| 1 | 美國廣播公司 | 5 | 2020 | 137 |
| 1 | 美國廣播公司 | 6 | 2020 | 137 |
| 1 | 美國廣播公司 | 7 | 2020 | 137 |
| 1 | 美國廣播公司 | 8 | 2020 | 137 |
| 1 | 美國廣播公司 | 9 | 2020 | 137 |
| 1 | 美國廣播公司 | 10 | 2020 | 137 |
| 1 | 美國廣播公司 | 11 | 2020 | 137 |
| 1 | 美國廣播公司 | 12 | 2020 | 137 |
| 1 | 美國廣播公司 | 1 | 2019 | 169 |
| 1 | 美國廣播公司 | 2 | 2019 | 169 |
| 1 | 美國廣播公司 | 3 | 2019 | 169 |
| 1 | 美國廣播公司 | 4 | 2019 | 169 |
| 1 | 美國廣播公司 | 5 | 2019 | 169 |
| 1 | 美國廣播公司 | 6 | 2019 | 169 |
| ... | ... | ... | ... | ... |
uj5u.com熱心網友回復:
讓我們嘗試使用melt assign和explode"Month":
out = (pd.melt(df.rename(columns={'Value1':2021, 'Value2':2020, 'Value3':2019}),
id_vars=['Index','Name'], value_vars=[2021, 2020, 2019],
var_name='Year', value_name='Value')
.assign(Month=pd.Series([[*range(1,13)]])).ffill()
.explode('Month')
[['Index','Name','Month','Year','Value']]
.sort_values(by=['Index','Name','Year'], ascending=[True, True, False])
.reset_index(drop=True)
)
輸出:
Index Name Month Year Value
0 1 abc 1 2021 136
1 1 abc 2 2021 136
2 1 abc 3 2021 136
3 1 abc 4 2021 136
4 1 abc 5 2021 136
.. ... ... ... ... ...
139 4 mno 8 2019 165
140 4 mno 9 2019 165
141 4 mno 10 2019 165
142 4 mno 11 2019 165
143 4 mno 12 2019 165
[144 rows x 5 columns]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434721.html
上一篇:按資料框名稱更改列名稱[R]
