python - 我无法使用 python datetime 更改日期格式
问题描述
我有一个数据框,其中包含字符串模式下的日期值列。我想将它转换为日期时间,但我根本做不到。
我首先尝试让 datetime 函数自动检测它,但它不能。我也尝试过手动操作,但我也没有找到解决方案。日期格式为“1 Ago 2020”,月份为西班牙语格式,同时,如您所见,它不包含直到 9 天的双 0。
我使用了不同的代码,但在这里我展示了一些代码的示例。
import pandas as pd
import datetime
dfweight = pd.read_csv('data_weight.csv')
pd.to_datetime(dfweight['Fecha'], format='%d %b, %Y')
他扔的地方:ValueError:时间数据'2020年5月12日'与格式'%d %b,%Y'不匹配(匹配)
我还尝试添加 # (% # d) 所以它不显示 0 到 9,因为我在一些评论中读到,但它显示以下错误。
ValueError: '#' 是格式为 '% # d% b,% Y' 的错误指令
如果有人可以帮助我,我会提前感谢你,因为我被阻止了。提前致谢
解决方案
由于您使用的是西班牙语格式,因此您需要设置一个西班牙语locale
.
- 在你的外壳中,运行
locale-gen
. 这可确保您拥有必要的本地化文件。
>> sudo locale-gen es_ES.UTF-8
Generating locales (this might take a while)...
es_ES.UTF-8... done
Generation complete.
- 在python中,首先设置语言环境。然后调用类似
datetime.datetime.strptime
. 如果您为日期格式代码"%d %b %Y"
传递了正确的字符串(如),那么 0 应该无关紧要。
>> python3
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> import datetime
>>> locale.setlocale(locale.LC_TIME, 'es_ES.UTF-8')
'es_ES.UTF-8'
>>> datetime.datetime.strptime("1 Ago 2020", "%d %b %Y")
datetime.datetime(2020, 8, 1, 0, 0)
>>> datetime.datetime.strptime("09 Ago 2020", "%d %b %Y")
datetime.datetime(2020, 8, 9, 0, 0)
推荐阅读
- pytorch - 从没有重复的张量中选择前 K 值
- javascript - 低功耗蓝牙 (BLE):将当前时间服务从 GATT 服务器发送到客户端
- azure - 多个 azure app 洞察遥测之间的相关性
- python - 使用 Django 进行多处理 - fork 导致随机死锁
- python - NLTK WordNetLemmatizer 针对特定单词返回的不正确 (?) 引理
- jpa - JPA 投影查询不包含具有其他独立字段的字段列表
- android - 在片段的私有函数中使用 adapterPosition
- html - 如何在 div 内的图像左侧获取文本?
- automated-tests - Cypress beforeEach 使用 cy.request 设置
- pandas - 计算数据框中不为零的数字并获取有关它们的统计信息