Python - Pandas - 将YYYYMM转换为datetime

Mtd*_*240 8 python pandas

初学python(因此也是pandas)用户.我试图将一些数据导入到pandas数据帧中.其中一列是日期,但格式为"YYYYMM".我试图做大多数论坛回复提出的建议:

df_cons['YYYYMM'] = pd.to_datetime(df_cons['YYYYMM'], format='%Y%m')
Run Code Online (Sandbox Code Playgroud)

这不起作用(ValueError: unconverted data remains: 3).该列实际上包含每年的附加值,MM = 13.该来源使用此行作为过去一年的平均值.我猜这to_datetime是有问题的.

任何人都可以提供快速解决方案,要么取消所有年度平均值(最后两位数字为"13"),要么to_datetime忽略它们?

EdC*_*ica 5

通过errors='coerce'然后dropna的NaT行:

df_cons['YYYYMM'] = pd.to_datetime(df_cons['YYYYMM'], format='%Y%m', errors='coerce').dropna()
Run Code Online (Sandbox Code Playgroud)

达芙月值将转换为NaT值

In[36]:
pd.to_datetime('201613', format='%Y%m', errors='coerce')

Out[36]: NaT
Run Code Online (Sandbox Code Playgroud)

或者,您可以在转换之前将其过滤掉

df_cons['YYYYMM'] = pd.to_datetime(df_cons.loc[df_cons['YYYYMM'].str[-2:] != '13','YYYYMM'], format='%Y%m', errors='coerce')
Run Code Online (Sandbox Code Playgroud)

尽管这可能会导致对齐问题,因为返回的Series的长度必须相同,所以仅通过传递errors='coerce'是一种更简单的解决方案