添加比较日期的新列

时间:2018-12-18 22:31:47

标签: python pandas datetime iteration

我有一个看起来像这样的数据框:

id    status    date_1         date_2
1       yes     2018-12-18     NaT
2       no      2018-06-30     2016-05-31
3       no      NaT            2014-04-15
4       yes     2010-01-01     2018-05-10

所有日期均为pandas datetime格式。我想在此数据框中创建一个新列,该列将比较date_1和date_2列以选择最早的日期并将其放在新列中,或者如果date_1或date_2具有NaT然后将另一个值放入像这样的新列:

id    status    date_1         date_2        new_column
1       yes     2018-12-18     NaT           2018-12-18
2       no      2018-06-30     2016-05-31    2016-05-31
3       no      NaT            2014-04-15    2014-04-15
4       yes     2010-01-01     2018-05-10    2010-01-01

我考虑过使用带有iterrows()的if语句来执行此操作,但不确定如何将行的值放入新列中。

1 个答案:

答案 0 :(得分:3)

您可以通过pd.DataFrame.min获取最小值,因为默认情况下skipna=True

df['new_col'] = df[['date_1', 'date_2']].min(1)

print(df)

   id status     date_1     date_2    new_col
0   1    yes 2018-12-18        NaT 2018-12-18
1   2     no 2018-06-30 2016-05-31 2016-05-31
2   3     no        NaT 2014-04-15 2014-04-15
3   4    yes 2010-01-01 2018-05-10 2010-01-01