初学者python(因此也称为pandas)用户。我正在尝试将一些数据导入pandas数据框。列之一是日期,但格式为“YYYYMM”。我已尝试做大多数论坛回复所建议的操作:
df_cons['YYYYMM'] = pd.to_datetime(df_cons['YYYYMM'], format='%Y%m')
不过,这不起作用(
ValueError: unconverted data remains: 3
)。该列实际上包含每年的附加值,MM = 13。消息来源将该行用作过去一年的平均值。我猜to_datetime
对此有问题。谁能提供一种快速的解决方案,或者剔除所有的年度平均值(后两位数字为“13”的平均值),或者让
to_datetime
忽略它们? 最佳答案
传递errors='coerce'
,然后dropna
传递NaT
行:
df_cons['YYYYMM'] = pd.to_datetime(df_cons['YYYYMM'], format='%Y%m', errors='coerce').dropna()
达芙月值将转换为
NaT
值In[36]:
pd.to_datetime('201613', format='%Y%m', errors='coerce')
Out[36]: NaT
或者,您可以在转换之前将其过滤掉
df_cons['YYYYMM'] = pd.to_datetime(df_cons.loc[df_cons['YYYYMM'].str[-2:] != '13','YYYYMM'], format='%Y%m', errors='coerce')
尽管这可能会导致对齐问题,因为返回的Series必须具有相同的长度,所以仅传递
errors='coerce'
是一个更简单的解决方案