我有一个看起来像这样的数据框:
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语句来执行此操作,但不确定如何将行的值放入新列中。
答案 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