You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PySpark中如何为DataFrame多列计算10%到90%的多段百分位数

解决方案

直接用pandas内置的quantile方法即可完成需求,该方法底层做了矢量运算优化,完全适配百万级数据量的计算场景,无需额外写循环逻辑,示例代码如下:

import pandas as pd

# 这里替换为你自己的DataFrame变量
df = pd.read_csv("你的数据文件路径") # 或者其他方式生成的df

# 定义要计算的10%~90%的百分位序列
calc_percentiles = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

# 计算所有数值列的指定百分位,转置后调整列名即可匹配要求的输出格式
result = df.quantile(calc_percentiles, numeric_only=True).T
# 按要求重命名列
result.columns = [f"PERCENTILE_{int(p*100)}" for p in calc_percentiles]
# 将列名转为单独的COL列
result = result.reset_index(names="COL")

# 如果需要输出为你示例的竖线分隔格式,直接调用to_csv即可
print(result.to_csv(sep="|", index=False))

可选调整项

  • 如果需要修改百分位的计算规则,可以给quantile方法传入method参数,可选值包括:
    • linear:默认线性插值算法
    • lower:取小于等于百分位的最近值
    • higher:取大于等于百分位的最近值
    • nearest:取最接近百分位的数值
    • midpoint:取上下两个边界的平均值
  • 如果你的数据全为数值列,可以去掉numeric_only=True参数。

内容的提问来源于stack exchange,提问作者Alf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:54:04