pandas如何按5间隔数值区间分组生成从0开始的累计标识列
解决方案
你需要的功能可以直接用 pandas 的逐元素整数除法实现,逻辑非常简单:
- 区间间隔为5的情况下,任意非负整数
x对应的区间标识正好等于x // 5(整数除法,向下取整),和你给出的区间规则完全匹配:- 0~4 整除5结果为0
- 5~9 整除5结果为1
- 10~14 整除5结果为2
- 后续区间以此类推
代码实现
import pandas as pd # 你的示例DataFrame df = pd.DataFrame(data={'a': [9,5,4,2,7,5,6,19,2,0,8,21,14]}) # 直接生成b列 df['b'] = df['a'] // 5
输出验证
运行后df['b']的结果正好和你给出的预期一致:
0 1 1 1 2 0 3 0 4 1 5 1 6 1 7 3 8 0 9 0 10 1 11 4 12 2 Name: b, dtype: int64
扩展说明
如果你的实际数据里a列存在负数,//默认的向下取整规则会得到负的区间标识,如果需要调整负数区间的计数逻辑,可以再做偏移处理,比如把所有值先加上对应偏移量再做整除即可。
内容的提问来源于stack exchange,提问作者siash
相关产品推荐
相关产品推荐

