我有一个数据帧,其中包含如下列:
Time Offset
0 2019/07/15 11:47:24 NaN
1 2019/07/15 11:47:47 0.0001
2 2019/07/15 11:51:46 0.0004
3 2019/07/15 11:51:51 0.0003
4 2019/07/15 12:30:00 NaN
当我尝试在其上运行df['Time'] = pd.to_datetime(df['Time'],format='%Y/%m/%d %H:%M:%S')
时,返回ValueError: time data 2019/07/15 nan doesn't match format specified
.为什么存在该nan
和/或如何摆脱它以将列转换为日期时间?
将参数errors=coerce
将不匹配格式的值转换为NaT
:
df['Time'] = pd.to_datetime(df['Time'],format='%Y/%m/%d %H:%M:%S', errors='coerce')
如果可能,尾随空格使用Series.str.strip
删除它们:
df['Time'] = pd.to_datetime(df['Time'].str.strip(),format='%Y/%m/%d %H:%M:%S', errors='coerce')
print (df)
Time Offset
0 2019-07-15 11:47:24 NaN
1 2019-07-15 11:47:47 0.0001
2 2019-07-15 11:51:46 0.0004
3 2019-07-15 11:51:51 0.0003
4 2019-07-15 12:30:00 NaN
然后,如果需要,删除列中带有NaN
s 的行Time
:
df = df.dropna(subset=['Time'])