我的数据框maturity_dt
中有一个名为datetime
的列,其中包含df
个对象,我只想选择列中maturity_dt
的行在八月或二月。所以,我试图使用下面的代码动态删除所有与这些月份不相符的行。但是,尽管使用IndexError: index 109235 is out of bounds for axis 0 with size 44681
,我仍然收到错误reset_index
,所以我想知道是否有其他方法可以动态删除行。
for (i, row) in df.iterrows():
dateold = datetime.datetime.strptime(row['maturity_dt'], '%Y-%m-%d %H:%M:%S.%f')
datenew = dateold.date()
date = str(datenew).split('.')[0]
h,m,s = re.split('-', date)
if m != 2 and m != 8: # If the month is not Feb or August
df.drop(df.index[i])
df = df.reset_index(drop=True)
谢谢
答案 0 :(得分:2)
你能按日期重新索引吗?这可行:
df['dt']=pandas.Datetimeindex(df['maturity_dt'])
df=df.set_index('dt')
df=df.loc[(df.index.month==2) | (df.index.month==8)].copy()