首页 > 解决方案 > 将日期从一列添加到另一列

问题描述

我有一个带有多个 ID 的 pandas 数据框,并且在其他列中我有两个日期列:“date1”和“date2”。我想将第二列的日期添加到第一列。这必须在数据框中的相同 ID 内完成。

我有的:

ID   date1     date2       value
1    1/1/2013  5/1/2013    a
1    4/1/2013  16/1/2013   a
1    8/3/2014  31/12/2014  b
2    11/4/2013  15/5/2013  a
2    19/5/2016  18/1/2017  b
2    8/4/2017  18/5/2017   b

我想要的输出:

ID   date1      value
1    1/1/2013   a
1    5/1/2013   a
1    4/1/2013   a
1    16/1/2013  a
1    8/3/2014   b
1    31/12/2014 b
2    11/4/2013  a
2    15/5/2013  a
2    19/5/2016  b
2    18/1/2017  b
2    8/4/2017   b
2    18/5/2017  b

谢谢你。

标签: pythonpandasdataframedate

解决方案


您可以融化数据框:

df.melt(value_vars=['date1', 'date2'])

   variable       value
0     date1    1/1/2013
1     date1    4/1/2013
2     date1    8/3/2014
3     date1   11/4/2013
4     date1   19/5/2016
5     date1    8/4/2017
6     date2    5/1/2013
7     date2   16/1/2013
8     date2  31/12/2014
9     date2   15/5/2013
10    date2   18/1/2017
11    date2   18/5/2017

设置ID等:

df.rename(columns={'value': 'val'}).melt(id_vars=['ID', 'val'], value_vars=['date1', 'date2']).drop('variable', axis=1).set_index('ID')

ID
1     1/1/2013
1     4/1/2013
1     8/3/2014
2    11/4/2013
2    19/5/2016
2     8/4/2017
1     5/1/2013
1    16/1/2013
1   31/12/2014
2    15/5/2013
2    18/1/2017
2    18/5/2017

推荐阅读