我想转换下表:id name 2002 2003 20041 name1 1 2 32 name2 4 5 63 name3 7 8 9对此:id name year value1 name1 2002 11 name1 2003 21 name1 2004 32 name2 2002 42 name2 2003 52 name2 2004 63 name3 2002 73 name3 2003 83 name3 2004 9我已经得到:df1.set_index(['id','name']) .stack().reset_index(name='a') .drop('a', 1) .rename(columns={'level_2':'year'})这让我得到了没有值列的第二个表,我需要做什么来添加值列?
1 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
您可以使用pd.melt
函数实现结果:
In [18]: df = df1.melt(id_vars=['id','name'],var_name='year',value_name='value')
In [19]: df
Out[19]:
id name year value
0 1 name1 2002 1
1 2 name2 2002 4
2 3 name3 2002 7
3 1 name1 2003 2
4 2 name2 2003 5
5 3 name3 2003 8
6 1 name1 2004 3
7 2 name2 2004 6
8 3 name3 2004 9
添加回答
举报
0/150
提交
取消