python - 如何使用计数查找列的范围间隔并比较其值?
问题描述
下面是我的演示数据框:
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]
. 如果可能的话,它之间的真实值或平均值。
解决方案
尝试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()
推荐阅读
- docker - docker module.js:550 抛出错误;^
- django - 允许 Django admin.site.register 接受超过 3 个参数
- javascript - 如何使用 react 和 typescript 在可重用组件中修复对象可能是未定义的错误?
- java - 如何制作具有准确边框的圆形 imageButton?
- c++ - TCP/IP 服务器代码在包含附加库后停止工作
- python - IndexError:在while循环中列出索引超出范围
- jquery - 添加自定义按钮后,如何更新购物车总数?
- php - PHP表单循环仅提交最后一个值或所有值
- gnuplot - 如何在 gnuplot 的 xlabel 中添加乘号?
- eslint - ESLint 导入/排序规则在不同机器上的工作方式不同 - 错误 `..` 导入应该在导入 `.` 之前发生