Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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
Python正在筛选日期上的数据帧_Python_Pandas_Csv_Date - Fatal编程技术网

Python正在筛选日期上的数据帧

Python正在筛选日期上的数据帧,python,pandas,csv,date,Python,Pandas,Csv,Date,我试图在某一列中的某一日期操作CSV文件。 我用熊猫(total noob)来做这件事,在我开始约会之前,我非常成功。 CSV看起来像这样(当然有更多的列和行)。 以下是专栏: 电路 状态 生效日期 这些是价值观: xx001 操作性 2007年12月31日 我尝试了dataframe查询(我在其他方面都使用它),但没有成功。 我尝试了dataframe loc(它适用于所有其他方面),但没有成功 如何获取给定日期中较旧或较新的所有行?如果我有其他条件来过滤数据框,我如何将它们与日期过滤器结合起

我试图在某一列中的某一日期操作CSV文件。 我用熊猫(total noob)来做这件事,在我开始约会之前,我非常成功。 CSV看起来像这样(当然有更多的列和行)。 以下是专栏:

电路
状态
生效日期

这些是价值观:

xx001
操作性
2007年12月31日

我尝试了dataframe查询(我在其他方面都使用它),但没有成功。 我尝试了dataframe loc(它适用于所有其他方面),但没有成功

如何获取给定日期中较旧或较新的所有行?如果我有其他条件来过滤数据框,我如何将它们与日期过滤器结合起来

这是我的“原始”代码:

将熊猫作为pd导入
#parse_dates=[“生效日期”]
#数据类型={'Effective Date':'str'}
df=pd.read\u csv(“example.csv”,dtype=object)
#,parse_dates=parse_dates,推断_datetime_format=True
#尝试了很多关于这方面的建议
cols=df.columns
cols=cols.map(λx:x.replace('''.''.'))
df.columns=cols
状态1='抑制'
状态2='订单中止'
池='2'
地区=‘欧盟’
日期1='2017年12月31日'
filt_df=df.query('Status!=@status1和Status!=@status2和Pool==@Pool和Region_A===@Region'))
过滤测向重置索引(drop=True,inplace=True)
过滤到csv('filtered.csv')
#这很有效
supp_df=df.query('Status=@status1和Effective_Date<@date1'))
支持测向重置索引(drop=True,inplace=True)
支持文档到支持文档(“支持文档”)
#这根本不起作用
我尝试了很多方法,但都没能把它们组合起来。这只是我尝试过的众多方法之一。。所以我知道这可能是完全错误的,因为没有使用日期解析。 supp.csv将被保存,但显示的日期到处都是,因此与此代码中的“逻辑”不匹配。
谢谢你的帮助

确保将日期转换为日期时间,然后对其进行过滤

df['Effective Date'] = pd.to_datetime(df['Effective Date'])
df[df['Effective Date'] < '2017-12-31']

#This returns all the values with dates before 31th of December, 2017.
#You can also use Query
df['effect Date']=pd.to_datetime(df['effect Date'])
df[df[生效日期]<'2017-12-31']
#这将返回日期在2017年12月31日之前的所有值。
#您还可以使用查询

确保将日期转换为日期时间,然后对其进行过滤

df['Effective Date'] = pd.to_datetime(df['Effective Date'])
df[df['Effective Date'] < '2017-12-31']

#This returns all the values with dates before 31th of December, 2017.
#You can also use Query
df['effect Date']=pd.to_datetime(df['effect Date'])
df[df[生效日期]<'2017-12-31']
#这将返回日期在2017年12月31日之前的所有值。
#您还可以使用查询

谢谢。这是有效的。现在我必须弄清楚如何过滤“坏”日期:)@iDrwish…如何将日期筛选为(从当前日期前14天)您可以使用
timedelta
dt.now()-timedelta(days=14)
,这是14天以前的日期。谢谢。这是有效的。现在我必须弄清楚如何过滤“坏”日期:)@iDrwish…如何将日期筛选为(从当前日期前14天),您可以使用
timedelta
dt.now()-timedelta(days=14)
,这是14天以前的日期。