我有一个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
答案 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)
然后其余代码将正常工作。