Python 熊猫计算每个范围之间的值数

Python 熊猫计算每个范围之间的值数,python,pandas,Python,Pandas,我想在某些自定义范围内查找我的数据计数 假设我有一些数据: import random my_randoms = random.sample(xrange(100), 10) test = pd.DataFrame(my_randoms,columns = ["x"]) 如何生成显示不同范围之间的值数量的数据框?例如,假设我想看看有多少值出现在0-19、20-39、40-59、60-79、80-100之间。输出数据帧将有一列包含这些范围,另一列包含计数 我可以想出一些丑陋的方

我想在某些自定义范围内查找我的数据计数

假设我有一些数据:

import random

my_randoms = random.sample(xrange(100), 10)        
test = pd.DataFrame(my_randoms,columns = ["x"])
如何生成显示不同范围之间的值数量的数据框?例如,假设我想看看有多少值出现在0-19、20-39、40-59、60-79、80-100之间。输出数据帧将有一列包含这些范围,另一列包含计数


我可以想出一些丑陋的方法,包括使用.apply获得一个新的列列表,说明它们之间的值(然后进行分组),但我怀疑熊猫有一种更干净的方法潜伏着。

可能有更好的方法。我对熊猫来说只是个新手,但现在呢

test.query(test.x.isin(range(20)))

熊猫和numpy允许布尔索引, 这是一种丑陋的做法吗

ranges = [ (0,19), (20, 39), (40, 69) ...]
cnt = []
for range in ranges:
    tmp = ranges[(ranges['x'] > range[0]) & (range['x'] <= range[1]) ]
    cnt.append( len(tmp) )
范围=[(0,19)、(20,39)、(40,69)…]
cnt=[]
对于范围中的范围:

tmp=ranges[(ranges['x']>range[0])和(range['x'],根据Jarad到另一个问题的链接:

test.groupby(pd.cut(test['x'], np.arange(0,100,20))).count()

您可以使用
numpy.histrogram
功能

import numpy as np
series = [0, 20, 40, ...]
count, bin_edge = np.histogram( bins = series )

根据,如果
bin
是一个序列,它定义了bin边,包括最右边的边,允许非均匀的bin宽度。

可能会有帮助。这很有效!太容易了,因为通常会突然想起
numpy.histogram
解决方案。我认为这比这个要好。