【问题标题】:Performing a median split on a pandas dataframe在 pandas 数据帧上执行中值分割
【发布时间】:2021-12-17 01:44:15
【问题描述】:

我有一个具有以下结构的 df:

    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'],
               })
df

我想对“varb”执行中位数分割,并将前 50 个百分位放入组“2”,将后 50 个百分位放入组“1”,这样生成的数据帧看起来像这样:

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'],
               'median_split': ['2', '2', '2', '1', '1', '1', '2']})
df

如何使用 python 实现这一点?

【问题讨论】:

  • 为什么 0.99 在 1 中?

标签: python pandas dataframe statistics


【解决方案1】:

看起来您在示例中使用 response 而不是 varb 进行中位数分割。您可以使用 pandas DataFrame/Series 的 quantile 方法。默认情况下,它只计算中位数,但您可以使用它来计算任何百分位数。

df["median_split"] = (df.response<df.response.quantile()).replace({True:1, False:2})

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2020-10-18
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多