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

如何在Pandas DataFrame中按State和County分组添加rate列的75%分位数新列

解决方法:给原DataFrame添加分组后的75%分位数列

嘿,这问题我熟!你之前用的groupby('State')['rate'].quantile(0.75)只会返回每个State分组的分位数结果,是个单独的Series,没法直接和原DataFrame合并。要实现给原表每一行都加上对应分组的分位数,得用groupby.transform()方法,它能把分组计算的结果“广播”回原DataFrame的每一行,完美匹配你的需求。

具体代码实现

首先先构造你的原DataFrame(如果已经有了可以跳过这步):

import pandas as pd

data = {
    'State': ['AK', 'AK', 'GA', 'GA', 'GA', 'GA', 'AR', 'AR'],
    'county': ['a', 'a', 'a', 'b', 'b', 'c', 'a', 'a'],
    'rate': [27.5, 30.5, 35.5, 50.0, 75.5, 90.5, 16.5, 10.5]
}
df = pd.DataFrame(data)

然后新增目标列,注意要按State和county两个字段分组(你需求里明确是这两个维度):

# 新增列存储每组的75%分位数
df['rate_75th_percentile'] = df.groupby(['State', 'county'])['rate'].transform(lambda x: x.quantile(0.75))

为什么用transform?

  • groupby.quantile():返回每个分组的单个计算值,结构是分组索引+分位数结果,没法直接对应原表的每一行。
  • groupby.transform():会保留原DataFrame的索引和行数,把每个分组的计算结果填充到该组的所有行中,这样就能直接作为新列添加到原表了。

最终效果

运行后你的DataFrame会变成这样:

Statecountyraterate_75th_percentile
AKa27.529.5
AKa30.529.5
GAa35.535.5
GAb50.069.125
GAb75.569.125
GAc90.590.5
ARa16.514.5
ARa10.514.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:43:09