如何在pandas DataFrame中新增列计算价格列对应指定分位数值
实现方法
直接使用Pandas内置的pd.qcut()函数即可完成需求,该函数专门用于按指定分位数对数值列进行分箱匹配。
完整代码示例
import pandas as pd # 1. 定义你需要的分位数边界列表 quantile_list = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 1] # 2. 计算价格对应的分位数值,写入新列 # labels参数设置为quantile_list[1:],即返回每个区间对应的上边界分位值 df['Price Quantiles'] = pd.qcut( df['Price'], q=quantile_list, labels=quantile_list[1:], duplicates='drop' # 可选,遇到重复分位点时自动去重避免报错 ) # 如果需要返回分位数区间的序号(比如第1个区间返回1,第2个返回2),替换为下面的写法 # df['Price Quantiles'] = pd.qcut(df['Price'], q=quantile_list, labels=False, duplicates='drop') + 1
参数说明
q:传入自定义的分位数列表,函数会自动按该列表划分价格区间labels:定义每个区间输出的标签值,这里直接取分位数列表的后段作为标签,匹配你要输出对应分位数值的需求duplicates='drop':当价格列有大量重复值导致分位点重复时,添加该参数可避免分箱报错,属于可选容错参数- 若需要调整分位数的插值计算逻辑,可添加
interpolation参数,可选值为linear(默认)、lower、higher、nearest、midpoint
内容的提问来源于stack exchange,提问作者user13425814
相关产品推荐
相关产品推荐

