通过重复行来重塑 pandas 数据框
问题描述:
我是Python的新手,尤其是Pandas. 我有一个像
I am new to Python especially Pandas. I have one dataframe like
-----------------------------------------------------
Id Name Salary desc1 desc2 desc3
-----------------------------------------------------
1 ABC1 2000 x1 y1 z1
-----------------------------------------------------
2 ABC2 5000 x2 y1 z2
-----------------------------------------------------
我想将其转换为这种方式
I want to transform it into this way
-----------------------------------------
ID Name Salary Variable
-----------------------------------------
1 ABC1 2000 x1
-----------------------------------------
1 ABC1 2000 y1
-----------------------------------------
1 ABC1 2000 z1
-----------------------------------------
2 ABC2 5000 x2
-----------------------------------------
2 ABC2 5000 y2
-----------------------------------------
2 ABC2 5000 z2
-----------------------------------------
请帮助.预先感谢.
答
您需要 set_index
+ 如果不需要对前三列进行排序:
If sorting first 3 columns is not necessary:
使用 melt
:
df = df.melt(['Id','Name','Salary'], value_name='Variable').drop('variable', axis=1)
print (df)
Id Name Salary Variable
0 1 ABC1 2000 x1
1 2 ABC2 5000 x2
2 1 ABC1 2000 y1
3 2 ABC2 5000 y1
4 1 ABC1 2000 z1
5 2 ABC2 5000 z2
lreshape
现在没有文档,但将来可能会被删除( github链接).
df = pd.lreshape(df, {'Variable':['desc1','desc2','desc3']})
print (df)
Id Name Salary Variable
0 1 ABC1 2000 x1
1 2 ABC2 5000 x2
2 1 ABC1 2000 y1
3 2 ABC2 5000 y1
4 1 ABC1 2000 z1
5 2 ABC2 5000 z2