Pandas如何按每n个数值对列分组并生成新的分组标签列
Pandas按固定间隔对价格列自动分组方案
使用Pandas内置的pd.cut()方法即可实现无手动条件的自动区间分组,具体实现逻辑如下:
完整实现代码
import pandas as pd # 1. 示例数据,可替换为你自己的数据集 df = pd.DataFrame({ 'Product': ['A', 'B', 'C', 'D', 'E', 'F'], 'Price': [3, 7, 12, 9, 16, 22] }) # 2. 自定义分组间隔 n = 5 # 3. 自动生成区间边界:适配当前数据的价格范围 min_bound = (df['Price'].min() // n) * n max_bound = ((df['Price'].max() // n) + 1) * n bins = list(range(int(min_bound), int(max_bound) + n, n)) # 4. 生成符合要求的分组标签 labels = [f'${bins[i]}-${bins[i+1]}' for i in range(len(bins)-1)] # 5. 生成分组列 df['Price_Group'] = pd.cut( x = df['Price'], bins = bins, labels = labels, include_lowest = True, right = False # 左闭右开,即$5-$10对应价格≥5且<10,匹配你的示例逻辑 )
参数说明
- 如果不需要适配当前数据的价格范围,想固定区间起始/结束值,直接手动定义
bins即可,例如要从0开始到100结束,间隔为5,可以直接写bins = list(range(0, 105, 5)) - 如果需要区间逻辑为左开右闭(即$5-$10对应价格>5且≤10),把
right参数改为True即可
内容的提问来源于stack exchange,提问作者Nathes
相关产品推荐
相关产品推荐

