如何存储数据并为指定范围之外的值创建额外的存储



如果我想将超过阈值的某些值分组在一起,而所有其他箱子都具有相同的模式,那么最有效的方法是什么

bins = [i for i in range(0,600,30)]
df['bins'] = pd.cut(df.Minutes,bins)

我想将分钟列中的值以30分钟为一组进行分组,但600分钟之后的任何值都被分组为单独的分组。

编辑:现在,以下代码df['bins'] = pd.cut(df.Minutes,bins)将每30分钟分组到600,任何超过该阈值的都将被归类为nan。目标是让这些nan成为定义超过600的任何东西的类别。

这就是我做你要求的方式(如果我理解正确的话)。现在可能有更好的方法,因为这至少有几年的历史了。

本质上,您需要修改您的输入列表(df.Minutes),以便将超过阈值的任何内容更改为单个数字,并将其收集到单个bin中。

例如,它接受0到7的范围,并改变4以上的数字。

np.where(np.arange(8) > 4, 5, np.arange(8))
array([0, 1, 2, 3, 4, 5, 5, 5])

再说一遍,如果我理解正确的话,你的分钟数可能从1到749:

df = pd.DataFrame({'Minutes':range(1,750)})

可以这样做,注意第20行有150个计数

bins = [i for i in range(0,660,30)]
pd.DataFrame(np.histogram(np.where(df['Minutes'] > 600, 601, df['Minutes']), bins=bins)).T.rename(columns={0:'count', 1: 'bin_left_edge'})
count  bin_left_edge
0    29.0            0.0
1    30.0           30.0
2    30.0           60.0
3    30.0           90.0
4    30.0          120.0
5    30.0          150.0
6    30.0          180.0
7    30.0          210.0
8    30.0          240.0
9    30.0          270.0
10   30.0          300.0
11   30.0          330.0
12   30.0          360.0
13   30.0          390.0
14   30.0          420.0
15   30.0          450.0
16   30.0          480.0
17   30.0          510.0
18   30.0          540.0
19   30.0          570.0
20  150.0          600.0
21    NaN          630.0

相关内容

  • 没有找到相关文章

最新更新