python - 写入 CSV 文件时未过滤的行
问题描述
此代码用于查找特定时间范围内的延迟交货(在本例中为 2018 年)并将数据写入 csv 文件 (otdedit.csv)。但是,尽管数据按年份正确过滤掉,但未过滤掉未延迟交付的值。我的问题是,如何过滤掉只有延迟交付才能写入 csv 文件 otdedit.csv 的行。
import pandas as pd
from datetime import datetime
from datetime import timedelta
PURCHASE_ORDER = 'Material'
DELIVERY_DATE = 'Delivery Date'
DESIRED_DATE = 'Desired Delivery'
DELAYED_DAYS = 'Delayed Days'
df = pd.read_csv('otd.csv', index_col=PURCHASE_ORDER)
df[DELIVERY_DATE] = pd.to_datetime(df[DELIVERY_DATE])
df[DESIRED_DATE] = pd.to_datetime(df[DESIRED_DATE])
df[DELAYED_DAYS] = df[DELIVERY_DATE] - df[DESIRED_DATE]
late_threshold = pd.Timedelta(days=0)
late_deliveries = df[DELAYED_DAYS] > late_threshold
df[late_deliveries].drop([DELIVERY_DATE, DESIRED_DATE], axis=1)
df['Delivery Date'] = pd.to_datetime(df['Delivery Date'], format='%m/%d/%Y')
df['Desired Delivery'] = pd.to_datetime(df['Desired Delivery'], format='%m/%d/%Y')
df2 = df[(df['Delivery Date'].dt.year >= 2018) & (df['Delivery Date'].dt.year <= 2018)]
df2['Diff Deliv Date'] = df2['Delivery Date'] - df2['Desired Delivery']
df2.to_csv('otdedit.csv', sep=',')
这是 otdedit.csv 的快照,请注意延迟天数为 0 的行仍然出现。
(另外作为旁注,我不知道为什么这个程序也没有按标题过滤,我只希望出现这 4 列,但原始文件中的每一列都显示(我已经隐藏了快照的列)
如果需要,这里还有示例数据:
Material Delivery Date Desired Delivery Delayed Days Diff Deliv Date
20030650 1/3/2018 12/22/2017 12 days 00:00:00.000 12 days 00:00:00.00000
20056352 1/2/2018 12/31/2017 2 days 00:00:00.00000 2 days 00:00:00.000000
20052196 10/18/2018 10/18/2018 0 days 00:00:00.0000 0 days 00:00:00.0000000
20031687 1/3/2018 12/27/2017 7 days 00:00:00.0000 7 days 00:00:00.000000
20031687 2/3/2018 2/3/2018 0 days 00:00:00.00000 0 days 00:00:00.000000
20056053 5/14/2018 3/11/2017 429 days 00:00:00.00 429 days 00:00:00.0000000
20070547 1/2/2018 8/15/2017 140 days 00:00:00.0000 140 days 00:00:00.00
解决方案
线
df[late_deliveries].drop([DELIVERY_DATE, DESIRED_DATE], axis=1)
正在将视图的副本创建到原始数据框中,并删除了给定的列,但是您没有将此副本分配给任何内容。原始数据框df
保持不变。
创建 df2 后你可以做的是:
df2 = df2[df2[DELAYED_DAYS] > late_threshold]
df2.drop([DELIVERY_DATE, DESIRED_DATE], axis=1, inplace=True)
推荐阅读
- android - React Native - 根据背景颜色更改文本颜色
- python - socketio 发出事件的问题-python 2.7 客户端到 nodejs 服务器
- javascript - 如何使用 PHP 数据库中的数据将按钮添加到基于 JavaScript 的表中?
- xamarin - 如何在 Xamarin.Forms Shell 中使用自定义依赖注入?
- ios - for in 循环保持快速运行 firebase 数据库
- llvm - 我在哪里可以找到 QEMU (TCG) 的/LLVM IR 操作语义?
- tailwind-css - 我怎样才能让这个盒子有相同的宽度?
- jpa - JPA生成策略表和序列的区别
- c++ - 创建子类的多个实例,只有一个超类的实例
- flutter - 如何对按钮进行编程以在点击和保持时连续增加或减少计数器?