如何对pandas dataframe执行median split中位数拆分并分组
pandas 中位数拆分实现方法
你提供的varb列初始为字符串格式,需要先转为数值类型再做分位数计算,完整实现代码如下:
import pandas as pd import numpy as np # 初始化原始数据 df = pd.DataFrame({ 'varb': ['0.56', '0.74', '0.89', '0.99', '0.24', '0.76', '0.60'], 'response': ['141', '134', '72', '29', '34', '50', '128'], }) # 计算varb列中位数(先转浮点型避免字符串比较错误) varb_median = df['varb'].astype(float).median() # 生成中位数拆分列:大于等于中位数划分为组2,小于划分为组1,可根据实际需求调整判断逻辑 df['median_split'] = np.where(df['varb'].astype(float) >= varb_median, '2', '1') print(df)
补充说明
- 如果你需要和给出的示例结果完全匹配,可以调整判断条件为
df['varb'].astype(float) <= 0.7即可,示例中的分组逻辑存在数值排序矛盾,你可以根据实际业务规则调整判断阈值 - 数据量较大时,
np.where的执行效率比apply更高,推荐使用该写法
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

