首页 > 解决方案 > 如何使用计数查找列的范围间隔并比较其值?

问题描述

下面是我的演示数据框:

df=pd.DataFrame({"a": np.random.randint(1, high=50, size=50)})
bins =np.arange(0,df['a'].max()+1,5).astype('int') # this range interval with 5 

当我在 func 以下运行时,我得到范围和它的计数是这样的。

df.a.value_counts(bins=bins,sort=False)

(-0.001, 5.0]     3
(5.0, 10.0]       2
(10.0, 15.0]      5
(15.0, 20.0]      3
(20.0, 25.0]      5
(25.0, 30.0]     10
(30.0, 35.0]      6
(35.0, 40.0]      6
(40.0, 45.0]      4

我想要的是什么时候我会给范围说[20:50]它将返回它之间的最大计数。

在这里,10我也想知道它在[25:30]. 如果可能的话,它之间的真实值或平均值。

标签: pythonpandas

解决方案


尝试overlaps方法:

# the counts
counts = df.a.value_counts(bins=bins,sort=False)

# query interval
interval = pd.Interval(20,50)

counts.loc[counts.index.overlaps(interval)].idxmax()

推荐阅读