转换缺少值的日期字符串



这可能被公式化为一个更一般的问题,但我遇到的问题是这样的:我想将一个日期字符串转换为datetime对象,但该字符串包含空日期。例如:

df = pd.DataFrame({'A': ['2000.02.25', ''], 'B': ['', '2003.05.26']})

我希望返回的数据帧将空日期保留为NaNNaT。为了速度起见,我不想使用pd.to_datetime,它在其他方面工作得很好,但与datetime.datetime:相比慢了一个数量级

df['A'] = [datetime.datetime.strptime(x, '%Y.%m.%d') for x in df['A']]

然而,问题是如何处理空字符串。如果我包含if len(x) > 0条件,则返回的列表将具有不同的长度。

df['A'] = [datetime.datetime.strptime(x, '%Y.%m.%d') if x else pd.NaT for x in df['A']]

构造a if cond else b可以在列表理解之外使用,它是python的三元运算符。

我也有点惊讶df = df.astype(pd.datetime)没有获胜,但我的猜测是,它在每一个空行都会出现异常。此性能命中可能值得bug使用。

相关内容

  • 没有找到相关文章

最新更新