Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas-Python,基于日期列删除行_Python_Date_Datetime_Pandas - Fatal编程技术网

Pandas-Python,基于日期列删除行

Pandas-Python,基于日期列删除行,python,date,datetime,pandas,Python,Date,Datetime,Pandas,我试图根据一个日期列删除数据框的行[交货日期] 我需要删除超过6个月但不等于“1970”年的行 我创建了两个变量: from datetime import date, timedelta sixmonthago = date.today() - timedelta(188) import time nineteen_seventy = time.strptime('01-01-70', '%d-%m-%y') 但是我不知道如何使用[Delivery Date]列删除基于这两个变量的行 有人

我试图根据一个日期列删除数据框的行<代码>[交货日期]

我需要删除超过6个月但不等于“1970”年的行

我创建了两个变量:

from datetime import date, timedelta
sixmonthago = date.today() - timedelta(188)

import time
nineteen_seventy = time.strptime('01-01-70', '%d-%m-%y')
但是我不知道如何使用
[Delivery Date]
列删除基于这两个变量的行


有人能提供正确的解决方案吗?

您可以将其过滤掉:

df[(df['Delivery Date'].dt.year == 1970) | (df['Delivery Date'] >= sixmonthago)]
这将返回年份为1970或日期小于6个月的所有行

您可以使用布尔索引并传递多个条件来过滤df,对于多个条件,您需要使用数组运算符,因此
|
而不是
,并且由于运算符优先级,需要在条件周围加上括号


检查文档以了解有关

的解释,确保计算本身在之前的“6个月”内是准确的。您可能不想在188天内硬编码。并非所有月份都是平等的

from datetime import date
from dateutil.relativedelta import relativedelta

#http://stackoverflow.com/questions/546321/how-do-i-calculate-the-date-six-months-from-the-current-date-using-the-datetime
six_months = date.today() - relativedelta( months = +6 )
然后可以应用以下逻辑

import time
nineteen_seventy = time.strptime('01-01-70', '%d-%m-%y')

df = df[(df['Delivery Date'].dt.year == nineteen_seventy.tm_year) | (df['Delivery Date'] >= six_months)]
如果确实要删除数据帧的部分,可以执行以下操作:

df = df[(df['Delivery Date'].dt.year != nineteen_seventy.tm_year) | (df['Delivery Date'] < six_months)].drop(df.columns)
df=df[(df[‘交付日期’].dt.year!=十九(七十)年)|(df[‘交付日期’]<六(六)个月)]。下降(df.columns)

谢谢。。我得到一个返回错误:TypeError:“只能使用带有datetimelike值的.dt访问器”-可能需要单独的问题,但这是否意味着我必须将[Delivery Date]更改为datetime?对不起,我对这个很陌生。你可能有字符串而不是日期时间,你可以将doing
df['Delivery Date']=pd.转换为_datetime(df['Delivery Date'])
嘿,这是返回的错误:drop()至少接受2个参数,给定1个参数