熊猫-字符串与格式不匹配时,“时间数据与格式不匹配”错误?
问题内容:
我收到一个值错误,说我的数据与格式不匹配。不知道这是一个错误还是我在这里丢失了一些东西。我指的是此文档的字符串格式。怪异的部分是,如果我将“数据”数据帧写入csv并读入,然后调用其下面的函数将转换日期,所以我不确定为什么不写入csv它将不起作用。
有任何想法吗?
data['Date'] = pd.to_datetime(data['Date'], format='%d-%b-%Y')
我遇到两个错误
TypeError: Unrecognized value type: <class 'str'>
ValueError: time data '27‑Aug‑2018' does not match format '%d-%b-%Y' (match)
日期示例-
2‑Jul‑2018
27‑Aug‑2018
28‑May‑2018
19‑Jun‑2017
5‑Mar‑2018
15‑Jan‑2018
11‑Nov‑2013
23‑Nov‑2015
23‑Jun‑2014
18‑Jun‑2018
30‑Apr‑2018
14‑May‑2018
16‑Apr‑2018
26‑Feb‑2018
19‑Mar‑2018
29‑Jun‑2015
是不是因为它们都不都是两位数的日子?一位数字天的字符串格式值是多少?看起来这可能是原因,但是我不确定为什么它会在‘27’上出错。
最终解决方案(这是unicode而不是字符串)-
data['Date'] = data['Date'].apply(unidecode.unidecode)
data['Date'] = data['Date'].apply(lambda x: x.replace("-", "/"))
data['Date'] = pd.to_datetime(data['Date'], format="%d/%b/%Y")
问题答案:
您的日期字符串似乎有问题。我用示例数据复制了您的问题,如果我删除了连字符并手动替换了它们(对于前三个日期),则代码可以正常工作
pd.to_datetime(df1['Date'] ,errors ='coerce')
输出:
0 2018-07-02
1 2018-08-27
2 2018-05-28
3 NaT
4 NaT
5 NaT
6 NaT
7 NaT
8 NaT
9 NaT
10 NaT
11 NaT
12 NaT
13 NaT
14 NaT
15 NaT
底线:您的连字号看起来像普通的连字号,但实际上又是别的东西,只需清理源数据即可