Skip to main content
 首页 » 编程设计

python之Pandas之如果字段为 NaT (Null),则用其他列填充

2025年05月04日20落叶无声

在 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