熊猫从字符串转换为日期时间时抛出ValueError

时间:2019-03-05 20:12:51

标签: pandas

我有一个Excel工作表,该工作表的列应该包含日期值,但熊猫将其读取为float64。它有空白

df:
date_int
15022016
23072017

我想转换为日期时间对象。我这样做:

df['date_int1'] = df['date_int'].astype(str).fillna('01011900')#To fill the blanks
df['date_int2']=pd.to_datetime(df['date_int1'],format='%d%m%Y')

转换为日期时间时出现错误:

TypeError: Unrecognized value type: <class 'str'>
ValueError: unconverted data remains: .0

2 个答案:

答案 0 :(得分:1)

在填满NaN之前,您不应该转换为字符串。否则,NaN也会被字符串化,此时将没有任何内容可以填充。

df

     date_int
0  15022016.0
1  23072017.0
2         NaN

df['date_int'] = df['date_int'].fillna(1011900, downcast='infer').astype(str)
pd.to_datetime(df['date_int'], format='%d%m%Y', errors='coerce')

0   2016-02-15
1   2017-07-23
2   1900-01-10
Name: date_int, dtype: datetime64[ns]

答案 1 :(得分:0)

请参阅@ Wen-Ben的评论。首先将数据转换为int。

df.date_int = df.date_int.astype(int)

然后其余代码将正常工作。