首页 > 解决方案 > 按年份过滤行

问题描述

我有这段代码用于按年份过滤行。我知道您应该调用 datetime 方法以使此代码正常工作。我在 StackOverFlow 上看到的每个答案都包含与我类似的代码,并且适用于他们。如何打印 2017-2018 年的行值而不会出错?这是我的全部代码,我需要创建一个函数吗?我对日期时间代码非常不熟悉,因此任何见解或指南都会非常有益,就像我说我过去 2 天一直在寻找答案而没有任何发现,所以我相信我做的事情根本上是错误的。如果我需要进一步澄清我的问题,请告诉我。

import pandas as pd
import datetime


df = pd.read_csv('otd.csv', encoding='latin-1')
df['Delivery Date'] = pd.to_datetime(df['Delivery Date'], format= '%m/%d/%Y')
df[(df['Delivery Date'].year >= 2017) & (df['Delivery Date'].year <= 2018)]
print(df)

错误:

Traceback (most recent call last):
  File "C:\Users\khalha\eclipse-workspace\Test3\Project3\P3.py", line 10, in <module>
    df[(df['Delivery Date'].year >= 2017) & (df['Delivery Date'].year <= 2018)]
  File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\generic.py", line 4376, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'year'

otd.csv:

在此处输入图像描述

标签: pythonpandascsvdatetime

解决方案


使用.dt访问器:dt

df[(df['Delivery Date'].dt.year >= 2017) & (df['Delivery Date'].dt.year <= 2018)]

推荐阅读