如果与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
谢谢
答案 0 :(得分:1)
没有尝试过,但也许pandas原生函数会更快地迭代。类似的东西:
df['dt']=pandas.Datetimeindex(df['maturity_dt'])
newdf=df.loc[df['dt']<=todays_date].copy()
答案 1 :(得分:0)
您可以使用与存储这些日期相同的格式来格式化比较日期,而不是解析每行中的日期,然后您可以进行字符串比较。
此外,如果有一种方法可以在一次调用中删除多行,则可以使用循环来收集要删除的行的索引,然后使用该调用将它们放在一起。