如何使用pandas.cut()获取分箱的上限值用于后续聚合?
实现方法
方法1:从已有分箱结果提取区间上限
pd.cut返回的是分类类型数据,每个元素为Interval对象,内置right属性直接返回区间上限值,实现代码如下:
# 方法1.1 逐元素提取(适合小数据量) africa_uhc_upper = africa_uhc.apply(lambda x: x.right) # 方法1.2 转IntervalIndex批量提取(效率更高,适合大数据量) africa_uhc_upper = pd.IntervalIndex(africa_uhc).right
运行后你示例中索引29的行就会直接返回0.75,返回结果为float类型可直接用于后续聚合计算。
方法2:分箱时直接指定标签为上限值
如果还未执行分箱操作,可在调用pd.cut时直接指定labels参数为对应区间的上限值,一步得到目标结果:
bins = [0, 0.25, 0.50, 0.75, 1] # 标签顺序和分箱区间顺序一一对应,直接取每个区间的上限 labels = [0.25, 0.5, 0.75, 1.0] africa_uhc = pd.cut( africa[("Universal health coverage (UHC) service coverage index")]/100, bins=bins, labels=labels )
如果需要显式转为数值类型,可在末尾添加.astype(float)即可。
内容的提问来源于stack exchange,提问作者Mathhurtsmybrain
相关产品推荐
相关产品推荐

