在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总是这样吗?

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

相关内容

  • 没有找到相关文章

最新更新