Python 改进带有日期的对象列的性能筛选

Python 改进带有日期的对象列的性能筛选,python,performance,pandas,datetime,dataframe,Python,Performance,Pandas,Datetime,Dataframe,正在处理纽约市车祸数据集。当前csv包含2012年的数据,我想提取2017年的值。问题是DATE是一个对象数据类型,尝试这样的操作花费了太长时间 data = data[(pd.to_datetime((data['DATE'])).dt.year == 2017)] 下面是数据示例的外观 有人知道更快或更有效的方法吗?谢谢。瓶颈几乎肯定是在datetime转换中 为了提高性能,可以使用pd.To\u datetime的expert\u datetime\u format参数。根据: 推断日

正在处理纽约市车祸数据集。当前csv包含2012年的数据,我想提取2017年的值。问题是DATE是一个对象数据类型,尝试这样的操作花费了太长时间

data = data[(pd.to_datetime((data['DATE'])).dt.year == 2017)]
下面是数据示例的外观


有人知道更快或更有效的方法吗?谢谢。

瓶颈几乎肯定是在
datetime
转换中

为了提高性能,可以使用
pd.To\u datetime
expert\u datetime\u format
参数。根据:

推断日期时间格式:布尔值,默认为False

如果为True且未给出格式,则尝试推断 datetime字符串,如果可以推断,则切换到更快的方法 解析它们的方法。在某些情况下,这可以通过以下方式提高解析速度: 大约5-10倍

例如:

data['DATE'] = pd.to_datetime(data['DATE'], infer_datetime_format=True)
data = data[data['DATE'].dt.year == 2017)]

或者,您可以指定:


非常感谢jpp,我不知道推断日期时间格式是否真的有助于提高速度。@laughinglama42,或者在调用
pd.to\u datetime(data.date,format='%m/%d/%Y')
时显式指定日期格式。使用指定的格式转换需要3秒,但没有指定格式需要144秒。@ALollz,谢谢-还添加了一个指向
datetime
缩写页的链接。@jpp是否有办法修改此链接以同时添加到时间列?@laughinglama42,是的。有许多不同的格式可以合并,这是一个完整的指南。有关如何组合两列的信息,请参见。
data['DATE'] = pd.to_datetime(data['DATE'], format='%m/%d/%Y')
data = data[data['DATE'].dt.year == 2017)]