python - 使用 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
推荐阅读
- amazon-web-services - 当第三方 S3 存储桶中的对象更新时收到通知
- vba - 如何停止在 VBA 中使用 ShellExecute 命令创建的正在运行的任务
- azure-service-fabric - 在 Azure 服务结构中,有没有办法限制微服务的内存使用
- facebook - 如何使用 Facebook Marketing API 获取广告系列的投放状态?
- java - java.io.FileNotFoundException: null\gallery2.jpg(系统找不到指定的路径)
- flutter - 在 Flutter 中选择多个联系人
- ecmascript-6 - 如何使用 map(ES6) 返回函数列表?(ES6)
- c - “%1$d”输出是什么意思?
- azure - 使用 powershell 配置 NSG 规则 - 导入 ASG 时遇到问题
- c# - 给定对结构的托管引用,如何在偏移量处获取对字段的托管引用?