我想选择列并应用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