Pandas使用cut分箱后如何将区间替换为同箱数据的均值或中位数
解决方法
你可以直接使用pandas的groupby+transform组合实现需求,核心逻辑是按分箱后的B列分组,计算每组内A列的均值/中位数后,映射回原数据的对应行。
完整可运行代码
import pandas as pd # 生成初始DataFrame df = pd.DataFrame({'A':[10, 15, 12, 19, 11, 20, 25]}) # 等宽分箱得到区间列B df['B'] = pd.cut(df['A'], bins = 2) # 方案1:将B替换为对应分箱内A列的均值(保留2位小数,和你示例结果一致) df['B'] = df.groupby('B')['A'].transform('mean').round(2) # 方案2:如果要替换为分箱内A列的中位数,改用下面的代码即可 # df['B'] = df.groupby('B')['A'].transform('median') print(df)
输出结果(方案1)
A B 0 10 12.00 1 15 12.00 2 12 12.00 3 19 21.33 4 11 12.00 5 20 21.33 6 25 21.33
如果不需要保留小数位,可以去掉round(2)方法,或者根据需求调整保留位数。
内容的提问来源于stack exchange,提问作者Javad.Rad
相关产品推荐
相关产品推荐

