如何安全地将Pandas列转换为日期时间(如果它们可以是其他数据类型)



当panda从csv加载数据时,例如,它运行infer_objects()(或做同样事情的东西(。infer_objects尝试为加载的每一列确定适当的数据类型。它有时(总是?(不会推断日期时间列。

为了进行动态下游分析,我需要自动分配数据类型。我想动态地将对象列转换为日期时间。我真的很喜欢在pd.to_datetime()中使用infer_datetime_format=True。这很好,因为我并不总是知道日期的格式。但这不会长期有效,因为它太有效了。

它不会在int或float列上抛出任何错误(因为从技术上讲,这些列可能是日期(。或者,如果我只尝试转换数据类型为"object"的列,则我可以使其与errors = 'raise'发生无噪声错误。但对于我处理的许多日期时间列,我更喜欢强制格式错误(errors = 'coerce'(,而不是阻止该列被转换。

那么,有人找到了一种很好的方法来最好地检测真实日期的列吗?

您可以尝试传递自定义的date_parser:

pd.read_csv('file.csv', parse_dates=[0,1,2,3],
date_parser=lambda x: pd.to_datetime(x, errors='coerce'))

最新更新