动态删除Dataframe行

时间:2015-07-13 20:14:59

标签: python pandas

我的数据框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)

谢谢

1 个答案:

答案 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()