如何按DataFrame分组计算75分位阈值并新增isAboveThreshold标记列
实现代码
首先导入依赖包,构造示例数据:
import pandas as pd import numpy as np # 构造示例DataFrame data = { "group_name": ["g1", "g1", "g1", "g2", "g2", "g2", "g2", "g3", "g3", "g3"], "field_A": [3, 49, 90, 78, 92, 76, 48, 33, 44, 55] } df = pd.DataFrame(data)
核心处理逻辑:
# 按group_name分组,计算每组field_A的75%分位数,广播到组内所有行存入top列 df["top"] = df.groupby("group_name")["field_A"].transform(lambda x: x.quantile(0.75)) # 比较field_A值和当前组分位数,生成标记列 df["isTop75"] = np.where(df["field_A"] > df["top"], "Yes", "No")
运行后输出的结果与预期完全一致。如果不想额外引入numpy依赖,也可以用pandas自带的apply方法实现标记列的生成:
df["isTop75"] = df.apply(lambda row: "Yes" if row["field_A"] > row["top"] else "No", axis=1)
内容的提问来源于stack exchange,提问作者Him Singhvi
相关产品推荐
相关产品推荐

