如何将 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
的某种变体?
你说得对,在轴列上混合 bfill
和 ffill
应该可以:
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
我有一个包含 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
的某种变体?
你说得对,在轴列上混合 bfill
和 ffill
应该可以:
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