如何计算DataFrame每行a/b/c/d四列的四分位距q3-q1?
实现方案
你可以直接通过pandas的逐行apply配合四分位距计算函数实现,以下是两种可选方案:
前置准备:构造示例DataFrame
import pandas as pd # 按你给出的结构构造测试数据 df = pd.DataFrame({ "a": [1, 5], "b": [2, 6], "c": [3, 2], "d": [4, 7] })
方案1:纯pandas实现(无额外依赖)
直接通过quantile方法分别计算每行的q3、q1后求差值即可:
df["q3 - q1 from (a,b,c,d)"] = df[["a", "b", "c", "d"]].apply( lambda row: row.quantile(0.75) - row.quantile(0.25), axis=1 )
方案2:用scipy的内置IQR函数(代码更简洁)
如果允许引入scipy依赖,可以直接调用封装好的四分位距计算函数:
from scipy.stats import iqr df["q3 - q1 from (a,b,c,d)"] = df[["a", "b", "c", "d"]].apply(lambda row: iqr(row), axis=1)
结果说明
运行后得到的计算结果如下:
| a | b | c | d | q3 - q1 from (a,b,c,d) |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 1.5 |
| 5 | 6 | 2 | 7 | 2.0 |
如果需要使用其他四分位数计算规则(比如基于n+1的统计方法),可以通过quantile方法的method参数调整计算逻辑。
内容的提问来源于stack exchange,提问作者user17031311
相关产品推荐
相关产品推荐

