熊猫数据框使用列作为行(融化)

时间:2019-01-04 15:38:02

标签: python pandas melt

我知道,这个问题已经问过几次了,但是我没有设法根据已经提出的问题来构建我的解决方案。

我有DF:

id| country  |  series name   | 2015 | 2016 | 2017
--+----------+----------------+------+------+------
0 | saudi    | fertility rate | 1    | 2    | 2   |    
1 | saudi    | CO2 emissions  | 5    | 10   | 15  | 
2 | pakistan | fertility rate | 1    | 2    | 1   |
3 | pakistan | CO2 emissions  | NaN  | NaN  | NaN |

我要的DF:

id| country  | year | fertility rate | CO2 emissions 
--+----------+------+----------------+---------
0 | saudi    | 2015 |       1        |    5      
1 | saudi    | 2016 |       2        |    10      
2 | saudi    | 2017 |       2        |    15      
3 | pakistan | 2015 |       1        |    NaN
4 | pakistan | 2016 |       2        |    NaN
5 | pakistan | 2017 |       1        |    NaN

我尝试了多种不同的熔体配置,但是以某种方式我无法解决此问题。

1 个答案:

答案 0 :(得分:4)

IIUC melt + pivot_table。该答案假定id是您的索引。如果不是,则将其删除,因为计算中不需要它。


d = df.melt(id_vars=["country", "series name"], var_name="year")

d.pivot_table(
    index=["country", "year"], columns="series name", values="value"
).reset_index()

series name   country  year  CO2 emissions  fertility rate
0            pakistan  2015            NaN             1.0
1            pakistan  2016            NaN             2.0
2            pakistan  2017            NaN             1.0
3               saudi  2015            5.0             1.0
4               saudi  2016           10.0             2.0
5               saudi  2017           15.0             2.0
相关问题