使用包含错误的不一致字符串格式的日期列简化了巨大的 df:
df_length = 10000
df = pd.DataFrame({
"to_ignore": np.random.randint(1, 500, df_length),
"date": np.random.choice(["11 Nov 2018", "Feb 2019", "2021-11-02", "asdf"], df_length),
})
我们需要将datecol 转换为 datetime,但找不到在可用时间内不删除数据或进程的解决方案。连续尝试格式化errors='ignore':
df['date'] = pd.to_datetime(df['date'], format='%b %Y', errors='ignore')
df['date'] = pd.to_datetime(df['date'], format='%d %b %Y', errors='ignore')
但是对于错误的字符串(“asdf”),col 似乎不受影响。连续尝试格式errors='coerce'显然会丢失数据。
我们尝试了 dateparser,df['date'] = df['date'].apply(lambda x: dateparser.parse(x))它有点工作,只是它有时会出错(2019-02-02 应该是 2019-02-01):
to_ignore date
0 115 2019-02-02
1 285 NaT
...
这也非常慢(玩df_length)。
有什么好方法可以做到这一点?