为什么 str split 没有按预期工作?

why str split is not working as expected?

我的数据框列为 -

Date
2025-01-21 00:00:00
2021-12-05 00:00:00
12-MAY-2020/18-SEP-2020
15-JUN-2021/20-JUL-2021
2020-12-05 00:00:00

我正在使用以下代码从以“/”分隔的日期中提取第一个日期-

df["Date2"] = df["Date"].str.split('/', expand=True)[0]

我期待输出 -

Date2
2025-01-21 00:00:00
2021-12-05 00:00:00
12-MAY-2020
15-JUN-2021
2020-12-05 00:00:00

但是,输出如下-

Date2
nan
nan
12-MAY-2020
15-JUN-2021
nan

为什么会这样?

这可能是由于 'Date' 列中存在不同的数据类型:

所以使用astype()来确保类型:

df["Date2"] = df["Date"].astype(str).str.split('/', expand=True)[0]
#OR
df["Date2"] = df["Date"].astype(str).str.split('/').str[0]

df的输出:

    Date                        Date2
0   2025-01-21 00:00:00         2025-01-21 00:00:00
1   2021-12-05 00:00:00         2021-12-05 00:00:00
2   12-MAY-2020/18-SEP-2020     12-MAY-2020
3   15-JUN-2021/20-JUL-2021     15-JUN-2021
4   2020-12-05 00:00:00         2020-12-05 00:00:00

Note: 你可以检查 print(df['Date'].map(type).value_counts()) 的输出来验证