在 Pandas Dataframes 上-
我有一个如下所示的数据框:
ID date1 date2 date3
0 NaT NaT 2019-02-28
1 NaT 2019-11-10 2019-04-09
2 NaT NaT 2019-05-21
3 2019-12-06 2019-12-05 2019-12-27
4 2019-11-18 2019-11-18 2019-12-20
我想在数据框中添加另一个字段以获得如下输出:
ID date1 date2 date3 date4
0 NaT NaT 2019-02-28 2019-02-28
1 NaT 2019-11-10 2019-04-09 2019-11-10
2 NaT NaT 2019-05-21 2019-05-21
3 2019-12-06 2019-12-05 2019-12-27 2019-12-06
4 2019-11-18 2019-11-18 2019-12-20 2019-11-18
按顺序,
The date4 will be populated by the date3 if date2 and date1 not populated.
The date4 will be populated by the date2 if date2 and date3 populated.
The date4 will be populated by the date1 if date1, date2 and date3 populated.
您知道如何实现这一点吗?
我尝试了 fillna 但没有真正成功。
请您参考如下方法:
使用回填缺失值,然后按位置选择第一列 DataFrame.iloc :
df['date4'] = df[['date1','date2','date3']].bfill(axis=1).iloc[:, 0]
或者使用Series.fillna或 Series.combine_first :
df['date4'] = df['date1'].fillna(df['date2']).fillna(df['date3'])
print (df)
ID date1 date2 date3 date4
0 0 NaT NaT 2019-02-28 2019-02-28
1 1 NaT 2019-11-10 2019-04-09 2019-11-10
2 2 NaT NaT 2019-05-21 2019-05-21
3 3 2019-12-06 2019-12-05 2019-12-27 2019-12-06
4 4 2019-11-18 2019-11-18 2019-12-20 2019-11-18
