我有一个大型熊猫数据框,每小时数据都与它关联。然后我想把它解释为每小时数据总结的“每月”数据。但是,月份不一定是日历月,通常在一个月的中间开始,在下个月的中间结束。基于较小日期范围的大熊猫数据帧总和
我可以建立这些日期范围中每个日期范围的“月份”列表并循环遍历它,但我认为有一个更好的方法可以通过熊猫来完成。
这里是我当前的代码,最后一行抛出一个错误,是问题的症结所在:
dates = pd.Series(pd.date_range('1/1/2015 00:00','3/31/2015 23:45',freq='1H'))
nums = np.random.randint(0,100,dates.count())
df = pd.DataFrame({'date':dates, 'num':nums})
month = pd.DataFrame({'start':['1/4/2015 00:00','1/24/2015 00:00'], 'end':['1/23/2015 23:00','2/23/2015 23:00']})
month['start'] = pd.to_datetime(month['start'])
month['end'] = pd.to_datetime(month['end'])
month['num'] = df['num'][(df['date'] >= month['start']) & (df['date'] <= month['end'])].sum()
我希望类似的输出:
start end num
0 2015-01-04 2015-01-23 23:00:00 33,251
1 2015-01-24 2015-02-23 23:00:00 39,652
但当然,我我没有那样做。
试着看一下pd.tseries.offsets.Month,看看是否有一个开始日期和重采样由。如果没有开始日期,请添加所需月份的某一天的timedelta。 –