当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'))