Python 选择基于天数的每小时数据

Python 选择基于天数的每小时数据,python,pandas,filter,time-series,selection,Python,Pandas,Filter,Time Series,Selection,我有一个时间序列hourly_df,包含一些小时数据: import pandas as pd import numpy as np hourly_index = pd.date_range(start='2018-01-01', end='2018-01-07', freq='H') hourly_data = np.random.rand(hourly_index.shape[0]) hourly_df = pd.DataFrame(hourly_data, index=hourly_in

我有一个时间序列
hourly_df
,包含一些小时数据:

import pandas as pd
import numpy as np

hourly_index = pd.date_range(start='2018-01-01', end='2018-01-07', freq='H')
hourly_data = np.random.rand(hourly_index.shape[0])
hourly_df = pd.DataFrame(hourly_data, index=hourly_index)
我有一个DatetimeIndex,包含一些日期(如我所愿的天数),例如

我想选择每一行的
hourly_df
,它的索引日期在
daily_index
中,因此在我的例子中,所有的每小时数据都是从1月1日、5日和6日开始的。最好的方法是什么

如果我天真地使用
hourly_df.loc[daily_index]
,我只会在三天中的每一天的0:00:00获取行。我想要的是
daily\u index
中每一天的全天小时数据

day_filter = [hour.date() in daily_index.date for hour in hourly_df.index]
hourly_df[day_filter]
解决这一问题的一种可能性是创建一个过滤器,该过滤器获取
小时索引中每个元素的日期,并比较该日期是否在
每日索引中

day_filter = [hour.date() in daily_index.date for hour in hourly_df.index]
hourly_df[day_filter]
这会产生所需的输出,但似乎可以避免使用过滤器,并且可以使用类似于
hourly\u df.loc[daily\u index.date]
的表达式来完成

  • 每日索引
    保存为
    数据框
  • 使用
    hourly\u df.merge(每日索引,how='internal',…)在索引上进行合并