只需使用
to_datetime并设置
errors='coerce'为处理达芙数据:
In [321]:df['Date'] = pd.to_datetime(df['Date'], errors='coerce')dfOut[321]: Date0 2014-10-20 10:44:311 2014-10-23 09:33:462 NaT3 2014-10-01 09:38:45In [322]:df.info()<class 'pandas.core.frame.Dataframe'>Int64Index: 4 entries, 0 to 3Data columns (total 1 columns):Date 3 non-null datetime64[ns]dtypes: datetime64[ns](1)memory usage: 64.0 bytes
调用的问题
strptime是,如果字符串或dtype不正确,它将引发错误。
如果您这样做,那么它将起作用:
In [324]:def func(x): try: return dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S') except: return pd.NaTdf['Date'].apply(func)Out[324]:0 2014-10-20 10:44:311 2014-10-23 09:33:462 NaT3 2014-10-01 09:38:45Name: Date, dtype: datetime64[ns]
但是使用内置
to_datetime而不是调用会更快,
apply后者实际上只是循环播放您的系列。
时机
In [326]:%timeit pd.to_datetime(df['Date'], errors='coerce')%timeit df['Date'].apply(func)10000 loops, best of 3: 65.8 µs per loop10000 loops, best of 3: 186 µs per loop
我们在这里看到使用
to_datetime速度快了3倍。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)