You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于数据列生成Histogram并获取各Bin内元素索引及对应名称

实现直方图分组并获取对应元素的索引与名称

步骤说明

你已经通过np.histogram得到了分组计数和区间边界,接下来可以结合Pandas的分组功能,快速定位每个区间内的元素索引与对应的name值:

完整代码示例

import numpy as np
import pandas as pd

# 构造示例数据
data = {
    'name': ['a', 'b', 'c', 'd'],
    'n_7': [20, 14, 18, 11],
    'n_6': [11, 50, 21, 4]
}
df2 = pd.DataFrame(data)

# 生成直方图的计数与区间边界(你的现有代码)
counts, binEdges = np.histogram(df2.n_7, bins=6)

# 将n_7列的值映射到对应的区间分组
df2['bin_group'] = pd.cut(df2['n_7'], bins=binEdges, include_lowest=True)

# 遍历每个分组,提取索引和name
for bin_interval, group in df2.groupby('bin_group'):
    print(f"区间: {bin_interval}")
    print(f"元素索引: {group.index.tolist()}")
    print(f"对应的name: {group['name'].tolist()}")
    print("---")

代码解释

  • pd.cut(df2['n_7'], bins=binEdges, include_lowest=True):将n_7的每个值分配到对应的直方图区间,include_lowest=True确保最小值被包含在第一个区间内(匹配np.histogram的左闭右开规则,最后一个区间为闭区间)。
  • groupby('bin_group'):按区间分组,每个组包含该区间内的所有行数据。
  • 遍历分组时,group.index.tolist()获取组内元素的索引列表,group['name'].tolist()获取对应的名称列表。

示例输出

运行上述代码后,针对示例数据会输出类似结果:

区间: (10.991, 12.833]
元素索引: [3]
对应的name: ['d']
---
区间: (12.833, 14.667]
元素索引: [1]
对应的name: ['b']
---
区间: (16.5, 18.333]
元素索引: [2]
对应的name: ['c']
---
区间: (18.333, 20.167]
元素索引: [0]
对应的name: ['a']
---
区间: (14.667, 16.5]
元素索引: []
对应的name: []
---
区间: (20.167, 22.0]
元素索引: []
对应的name: []
---

内容的提问来源于stack exchange,提问作者Hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:35:30