通过重复行来重塑 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