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',…)在索引上进行合并