根据日期从Dataframe中删除行

时间:2015-07-07 20:56:45

标签: python

如果与df相关联的日期少于今天的日期,如何从Dataframe df['maturity_dt']中删除行?

我目前正在做以下事情:

todays_date = datetime.date.today()
datenow = datetime.datetime.combine(todays_date, datetime.datetime.min.time()) #Converting to datetime
for (i,row) in df.iterrows():
    if datetime.datetime.strptime(row['maturity_dt'], '%Y-%m-%d %H:%M:%S.%f') < datenow):
        df.drop(df.index[i])

然而,它花了太长时间,我希望做一些像:df = df[datetime.datetime.strptime(df['maturity_dt'], '%Y-%m-%d %H:%M:%S.%f') < datenow,但这会导致错误TypeError: must be str, not Series

谢谢

2 个答案:

答案 0 :(得分:1)

没有尝试过,但也许pandas原生函数会更快地迭代。类似的东西:

df['dt']=pandas.Datetimeindex(df['maturity_dt'])
newdf=df.loc[df['dt']<=todays_date].copy()

答案 1 :(得分:0)

您可以使用与存储这些日期相同的格式来格式化比较日期,而不是解析每行中的日期,然后您可以进行字符串比较。

此外,如果有一种方法可以在一次调用中删除多行,则可以使用循环来收集要删除的行的索引,然后使用该调用将它们放在一起。