熊猫-字符串与格式不匹配时,“时间数据与格式不匹配”​​错误?


问题内容

我收到一个值错误,说我的数据与格式不匹配。不知道这是一个错误还是我在这里丢失了一些东西。我指的是此文档的字符串格式。怪异的部分是,如果我将“数据”数据帧写入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

底线:您的连字号看起来像普通的连字号,但实际上又是别的东西,只需清理源数据即可