从pandas每小时数据框中删除整天

时间:2017-12-11 08:00:43

标签: python pandas dataframe

我正在处理一个小时数据框,该数据框从2016年开始每天每小时都有行。从这个每小时的数据框架中,我想删除我在'df_outlayers'数据框中的日期数据框。我尝试了以下方法:

remove = df_hourly.loc[df_outlayers.index]
df_clean = df_hourly.drop(remove.index)
df_clean['2017-04-17']

但它只是删除了当天的第一个小时,例如它删除了行2017-04-17 00:00:00但不删除2017-04-17 01:00:00。如何为那些给出的分层日子删除每小时?

注意:我的'df_outlayers'数据框有一个名为date的索引列,df_outlayers.index给出了例如:

DatetimeIndex(['2016-07-06', '2016-07-08', '2016-10-10', '2017-04-09',
           '2017-04-17', '2017-04-26', '2017-07-05', '2017-07-07',
           '2017-09-01', '2017-09-22', '2017-09-29'],
          dtype='datetime64[ns]', name='date', freq=None)

我的df_hourly数据框还有一个名为'date'的索引列,df_hourly.index例如:

DatetimeIndex(['2014-07-19 00:00:00', '2014-07-19 01:00:00', ...]
dtype='datetime64[ns]', name='date', length=13214, freq=None)

1 个答案:

答案 0 :(得分:1)

~boolean indexing似乎需要numpy.in1d带倒置掩码,因为DatetimeIndex.date返回numpy array

mask = np.in1d(df_hourly.index.date, df_outlayers.index.date)
df_clean = df_hourly[~mask]