使用日期改进对象列的性能过滤

时间:2018-04-29 01:01:21

标签: python performance pandas datetime dataframe

处理纽约市车祸数据集。目前的csv有2012年的数据,我想提取2017年的价值。事情是DATE是一个对象dtype,并尝试这样的事情最终花了太长时间

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

以下是数据样本的外观

Head of the dataset

有没有人可能知道更快或更有效的方式?谢谢。

1 个答案:

答案 0 :(得分:2)

瓶颈几乎可以肯定是datetime转化。

要提高效果,您可以使用infer_datetime_format的{​​{1}}参数。根据{{​​3}}:

  

infer_datetime_format :布尔值,默认为False

     

如果为True且未给出格式,请尝试推断格式   日期时间字符串,如果可以推断,请切换到更快的方法   解析它们。在某些情况下,这可以提高解析速度   〜5到10倍。

例如:

pd.to_datetime

或者,您可以指定docs

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