如何基于特定值为Pandas DataFrame分配分组编号?
解决Pandas DataFrame分组编号问题
嘿,这个需求其实很容易实现,用Pandas的分箱工具就能搞定。我给你两种靠谱的方案,根据你的实际场景选就行:
方案一:按等数量分组(推荐)
因为你要求把排序后的a列划分为10组,每组数量一致,用pd.qcut()是最适合的——它会按数据的分位数切割,保证每组的样本数量尽可能相等。
代码示例
import pandas as pd # 初始化你的DataFrame df = pd.DataFrame({'a': range(20)}) # 生成1-10的分组编号 df['group_num'] = pd.qcut(df['a'], q=10, labels=range(1, 11))
结果预览
a group_num 0 0 1 1 1 1 2 2 2 3 3 2 4 4 3 5 5 3 ... 18 18 10 19 19 10
方案二:按数值区间分组
如果你的需求是按固定数值范围分组(比如0-1为组1,2-3为组2...),可以用pd.cut(),它会按指定的区间切割数据。因为你的a列是均匀分布的0-19,这个方案也能得到和上面一样的结果:
代码示例
df['group_num'] = pd.cut(df['a'], bins=10, labels=range(1, 11))
小提示
- 如果你的数据不是均匀分布的(比如有大量重复值或极端值),优先选
qcut,它能保证每组的样本数量更均衡; - 如果你需要自定义分组区间,可以给
bins参数传入具体的区间列表,比如bins=[0,2,4,...,20]。
内容的提问来源于stack exchange,提问作者user3595632
相关产品推荐
相关产品推荐

