python - 解析和 strptime 不会在熊猫中转换我的日期
问题描述
我试图让我的数据框中的日期成为标准timestamp
的。
我有一个看起来像这样的数据框:
747 August 1,2019
587 12-06-2019
347 04-09-2019
709 July 9,2019
135 20/2/2019
解析器似乎什么都不做。
df['registration_date'] = df['registration_date'].astype(str)
for date in df['registration_date']:
try:
date = parse(date)
except ValueError:
pass
变体不起作用:
date = parse(date, fuzzy=True)
date = parse(date, fuzzy_with_tokens=True)
date = parse(date, fuzzy_with_tokens=False)
而且strptime
也不起作用:
for date in df['registration_date']:
try:
date = datetime.strptime(date, '%B %d,%Y')
except ValueError:
pass
我究竟做错了什么?
解决方案
运行df.registration_date = pd.to_datetime(df.registration_date)
。
幸运的是,pd.to_datetime
它足够聪明,可以识别每种情况下的日期格式并正确转换(至少对于您的示例数据)。
类型注意事项:
如果您随后运行df.info()
,您将看到此列的类型为datetime64[ns]。但是,如果您读取单个值,例如从第一行读取:df.loc[0, 'registration_date']
您将获得
Timestamp('2019-08-01 00:00:00'),因此单个值只是Timestamp类型。
推荐阅读
- c# - 查询Webclient的字符串到json字符串 - c#
- c# - 声明方法变量时有没有办法使用条件?
- javascript - 如何防止在浏览器控制台中使用 firebase.database()?
- laravel - REST 邮递员请求
- html - Internet Explorer 11 设计问题
- node.js - 无法识别根路由
- kubernetes - 无法使用自定义域访问入口网关
- javascript - Flask 的 AJAX 请求 CORS 策略错误
- python - FastAPI (starlette) 获取客户端真实IP
- graphql - 如何访问解析器中的查询路径属性?GraphQL