【发布时间】:2018-08-30 00:09:45
【问题描述】:
此代码用于显示哪些交货延迟,打印出与其关联的“材料”编号,并显示交货延迟了多少天。我现在的问题在于尝试过滤数据集以仅读取指定的时间范围;在我的以下代码中,我尝试过滤从 2017 年到 2018 年的数据,但是我收到一个错误(在代码块下方列出)。如何过滤行以仅显示指定的时间范围,同时进行相同的分析:即查看哪些材料零件号延迟交货并查看延迟了多少天(没有遇到错误)
import pandas as pd
from datetime import datetime
from datetime import timedelta
df = pd.read_csv('otd.csv')
diff_delivery_date = []
date_format = '%m/%d/%Y'
df2 = df[(df['Delivery Date'].dt.year >= 2017) & (df['Delivery Date'].dt.year <= 2018)]
for x,y,z in zip(df2['Material'], df2['Delivery Date'], df2['source desired delivery date']):
actual_deliv_date = datetime.strptime(y, date_format)
supposed_deliv_date = datetime.strptime(z, date_format)
diff_deliv_date = supposed_deliv_date - actual_deliv_date
diff_delivery_date.append(diff_deliv_date)
df['Diff Deliv Date'] = diff_delivery_date
print(df2)
完全错误:
Traceback (most recent call last):
File "C:\Users\khalha\eclipse-workspace\Python\Heyy\Code.py", line 13, in <module>
df2 = df[(df['Delivery Date'].dt.year >= 2017) & (df['Delivery Date'].dt.year <= 2018)]
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\generic.py", line 4372, in __getattr__
return object.__getattribute__(self, name)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\accessor.py", line 133, in __get__
accessor_obj = self._accessor(obj)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\indexes\accessors.py", line 325, in __new__
raise AttributeError("Can only use .dt accessor with datetimelike "
AttributeError: Can only use .dt accessor with datetimelike values
虚拟 csv: Image of csv file
Material Delivery Date source desired delivery date
3334678 12/31/2014 12/31/2014
233433 12/31/2014 12/31/2014
3434343 1/5/2015 1/5/2015
3334567 1/5/2015 1/5/2015
546456 2/11/2015 2/11/2015
221295 4/10/2015 4/10/2015
示例数据框:
Deliveryvalue = df2['11/31/2014', '11/31/2017', '11/31/2018']
Desiredvalue = df2['12/31/2014', '12/21/2017', '12/11/2018']
【问题讨论】:
-
您能否提供一个可以使用的DataFrame示例(不是图像)?
-
@DanielMesejo,好的,我应该如何提供这个数据框样本,我对 Stackoverflow 的新手表示歉意。
-
类似 pd.DataFrame(data=[[3334678, '12/31/2014', '12/31/2014']], columns=['material', 'delivery-date' , 'source-desired-delivery']),其中的值反映了数据的真实值和类型。
-
“otd.csv”是用逗号还是空格分隔的?
-
@DanielMesejo,我相信它的逗号分隔,当我打印某种列表时,有逗号
标签: python pandas csv datetime