我希望按日期过滤相当大的Pandas数据帧(大约300万行)。 出于某种原因,与布尔标准一起使用时,drop方法根本不起作用。它只返回相同的旧数据帧。删除单行不是问题。
这是最初使用的代码,它基本上什么都不做:
import pandas as pd
#open the file
df = pd.read_csv('examplepath/examplefile.csv', names=['File Name','FileSize','File Type','Date Created','Date Last Accessed','Date Last Modified','Path'],\
delimiter=';', header=None, encoding="ISO-8859-1",)
#convert to german style date
df['Date Created'] = pd.to_datetime(df['Date Created'], dayfirst=True)
#drop rows and assign new dataframe
df_filtered = df.drop(df[df['Date Created'] > datetime(2010,1,1)])
然后我想出了这个代码,它看起来像一个魅力:
import pandas as pd
#open the file
df = pd.read_csv('examplepath/examplefile.csv', names=['File Name','FileSize','File Type','Date Created','Date Last Accessed','Date Last Modified','Path'],\
delimiter=';', header=None, encoding="ISO-8859-1",)
#convert to german style date
df['Date Created'] = pd.to_datetime(df['Date Created'], dayfirst=True)
#select rows and assign new dataframe
df_filtered = df['Date Created'] < datetime(2010,1,1)
理论上的两个代码都应该做同样的事情,对吗? 是首选的代码之一?我可以使用我的第二个代码吗?将来我可能需要添加第二个过滤日期。
我希望有人可以帮助我。
谢谢和最诚挚的问候, 斯蒂芬