【发布时间】:2016-11-18 16:49:11
【问题描述】:
我正在尝试在时间窗口内对时间序列(每小时和每小时温度值)的值进行分类。
也就是说,从最初的每小时值,我想每天、每周或每月提取分箱值。
我曾尝试将groupby+TimeGrouper(" ") 与pd.cut 结合使用,但效果不佳。
我从这个tutorial 中发现了一个很好的函数,它建议映射数据(将每个值与下一列的映射范围相关联),然后根据它进行分组。
def map_bin(x, bins):
kwargs = {}
if x == max(bins):
kwargs['right'] = True
bin = bins[np.digitize([x], bins, **kwargs)[0]]
bin_lower = bins[np.digitize([x], bins, **kwargs)[0]-1]
return '[{0}-{1}]'.format(bin_lower, bin)
df['Binned'] = df['temp'].apply(map_bin, bins=freq_bins)
但是,应用此函数会导致 IndexError: index n is out of bounds for axis 0 with size n。
理想情况下,我希望完成这项工作并将其应用于同时实现双重分组:一个按 bin,一个按 timegrouper。
【问题讨论】:
标签: numpy pandas group-by grouping binning