我想轉(zhuǎn)換下表:id name 2002 2003 20041 name1 1 2 32 name2 4 5 63 name3 7 8 9對(duì)此: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我已經(jīng)得到:df1.set_index(['id','name']) .stack().reset_index(name='a') .drop('a', 1) .rename(columns={'level_2':'year'})這讓我得到了沒(méi)有值列的第二個(gè)表,我需要做什么來(lái)添加值列?
1 回答

翻過(guò)高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用pd.melt
函數(shù)實(shí)現(xiàn)結(jié)果:
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
添加回答
舉報(bào)
0/150
提交
取消