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