选择数据框中的特定列并追加到新行中

时间:2018-12-13 16:37:11

标签: python python-3.x pandas dataframe jupyter-notebook

我一直在寻找一种重新排列数据框的方法。我的原始数据框如下所示:

df:

   YOB    Name   Treatment_1   Date_1       Treatment_2    Date_2
0  1974   John       A        2018-11-13         D         2018-12-13
1  1975   Jones      B        2018-11-14         E         2018-12-14
2  1976   Jack       C        2018-11-15         F         2018-12-15

现在我希望我的数据框在不同的行上显示不同的治疗信息

df:
   YOB    Name   Treatment   Date      
0  1974   John       A      2018-11-13         
1  1974   John       D      2018-12-13
2  1975   Jones      B      2018-11-14         
3  1975   Jones      E      2018-12-14
4  1976   Jack       C      2018-11-15         
5  1976   Jack       F      2018-12-15

由于我被困了好几天,有人可以帮忙澄清一下这件事。

谢谢您

注意:我已经简化了它,但是实际的数据集将有20多个与治疗相关的列,有没有一种方法可以使用范围而不是键入每个单独的列?抱歉在开始时不清楚

1 个答案:

答案 0 :(得分:1)

使用pd.wide_to_long

df = df.rename(columns={'Data_2':'Date_2'})  #Fix typo error first.

pd.wide_to_long(df, ['Date','Treatment'], i=['YOB','Name'], j='No', sep='_', suffix='\d+')\
  .reset_index()

输出:

    YOB   Name  No        Date Treatment
0  1974   John   1  2018-11-13         A
1  1974   John   2  2018-12-13         D
2  1975  Jones   1  2018-11-14         B
3  1975  Jones   2  2018-12-14         E
4  1976   Jack   1  2018-11-15         C
5  1976   Jack   2  2018-12-15         F