首页 > 解决方案 > 使用 pandas 中的参数应用 to_datetime

问题描述

我想选择列并使用参数应用 to_datetime。我有一个使用 lambda 的工作方法,但想了解原因。

设置

d = {'date': ['5/2/2000'], 'date2': ['3/02/2000'], 'date3': ['1-2-2000']}
df = pd.DataFrame(data=d)
print(df.dtypes)

这有效并提供了所需的输出。

df[['date', 'date2', 'date3']] = df[['date', 'date2', 'date3']].apply(lambda x: pd.to_datetime(x, dayfirst=True))

output
    date        date2       date3
0   2000-02-05  2000-02-03  2000-02-01

这有效,但不带参数,因此不适用于英国日期。

df[['date', 'date2', 'date3']] = df[['date', 'date2', 'date3']].apply(pd.to_datetime)

output (incorrect)
    date        date2       date3
0   2000-05-02  2000-03-02  2000-01-02

这不起作用,但为什么?

df[['date', 'date2', 'date3']] = df[['date', 'date2', 'date3']].apply(pd.to_datetime(dayfirst=True))

error

TypeError: to_datetime() missing 1 required positional argument: 'arg'

为什么我不能用参数应用 to_datetime?apply 总是这样吗?

标签: pythonpandasdataframeapply

解决方案


dayfirst=True作为参数放到.apply(看**kwargs参数):

df[["date", "date2", "date3"]] = df[["date", "date2", "date3"]].apply(
    pd.to_datetime, dayfirst=True
)

print(df)

印刷:

        date      date2      date3
0 2000-02-05 2000-02-03 2000-02-01

推荐阅读