如何将 3 列的日期时间值合并到 pandas 数据框中的单个列?

How to Coalesce datetime values from 3 columns into a single column in a pandas dataframe?

我有一个包含 3 个日期时间格式的日期列的数据框:

CLIENT_ID DATE_BEGIN DATE_START DATE_REGISTERED
1 2020-01-01 2020-01-01 2020-01-01
2 2020-01-02 2020-02-01 2020-01-01
3 NaN 2020-05-01 2020-04-01
4 2020-01-01 2020-01-01 NaN

如何为每一行创建(合并)一个包含最早日期时间的新列,从而产生 ACTUAL_START_DATE

CLIENT_ID DATE_BEGIN DATE_START DATE_REGISTERED ACTUAL_START_DATE
1 2020-01-01 2020-01-01 2020-01-01 2020-01-01
2 2020-01-02 2020-02-01 2020-01-01 2020-01-01
3 NaN 2020-05-01 2020-04-01 2020-04-01
4 2020-01-01 2020-01-02 NaN 2020-01-01

bfill 的某种变体?

你说得对,在轴列上混合 bfillffill 应该可以:

df.assign(ACTUAL_START_DATE = df.filter(like='DATE')
                                .bfill(axis=1)
                                .ffill(axis=1)
                                .min(axis=1)
        )
 
   CLIENT_ID  DATE_BEGIN  DATE_START DATE_REGISTERED ACTUAL_START_DATE
0          1  2020-01-01  2020-01-01      2020-01-01        2020-01-01
1          2  2020-01-02  2020-02-01      2020-01-01        2020-01-01
2          3         NaN  2020-05-01      2020-04-01        2020-04-01
3          4  2020-01-01  2020-01-01             NaN        2020-01-01