我有一个数据帧,它包含日期值中的一列在字符串模式下。我想把它转换成日期时间,但我根本做不到。
我第一次尝试让datetime函数自动检测它,但它做不到。我也尝试过手动操作,但也没有找到解决方案。日期格式为"2020年1月1日",月份为西班牙语格式,同时,正如您所看到的,它在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
。
- 在shell中,运行
locale-gen
。这样可以确保您拥有必要的本地化文件
>> sudo locale-gen es_ES.UTF-8
Generating locales (this might take a while)...
es_ES.UTF-8... done
Generation complete.
- 在python中,首先设置区域设置。然后调用类似CCD_ 3的东西。如果您为日期格式代码传递了正确的字符串(如
"%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)