按行筛选行数

问题描述 投票:0回答:1

我有这个代码用于按年过滤行。我知道你应该调用方法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'

单独的xsv:

enter image description here

python pandas csv datetime
1个回答
1
投票

使用.dt访问器:dt

df[(df['Delivery Date'].dt.year >= 2017) & (df['Delivery Date'].dt.year <= 2018)]
© www.soinside.com 2019 - 2024. All rights reserved.