熊猫通过排除日期范围对DatetimeIndex进行过滤

时间:2019-04-14 22:31:03

标签: python pandas dataframe

我目前有一个pandas.DataFrame,其中有一个pandas.DatetimeIndex和一组值。

我想从此pandas.date_range排除给定pandas.DataFrame中的所有日期。

示例代码:

dates = pd.date_range(start='04/01/2012', end='04/01/2019', freq='MS')
df = pd.DataFrame(data=[100]*len(dates),index=dates,columns=["val"])

exclusion_dates = pd.date_range(start='04/01/2012', end='04/01/2019', freq=pd.offsets.DateOffset(months=12))

我的尝试

df.loc[~exclusion_dates,:]

理想情况下,这会导致df包含所有日期{strong> 的所有日期1st April YYYY

但是,这会导致以下错误:

  

TypeError:一元〜的错误操作数类型:“ DatetimeIndex”

我看着下面的线程,但是找不到任何东西: Filtering Pandas DataFrames on dates

1 个答案:

答案 0 :(得分:1)

使用isin()

df.loc[~df.index.isin(exclusion_dates)]

            val
2012-02-01  100
2012-03-01  100   <-- April excluded
2012-05-01  100
2012-06-01  100
2012-07-01  100
2012-08-01  100
2012-09-01  100
2012-10-01  100
2012-11-01  100
2012-12-01  100
2013-01-01  100
2013-02-01  100
2013-03-01  100   <-- April excluded
2013-05-01  100
...

注意:默认格式将日期字符串视为mm / dd / yyyy。因此使用:

pd.date_range(start='04/01/2012', end='04/01/2019', ...)