gpt4 book ai didi

python - 根据观察分位数分配指标

转载 作者:行者123 更新时间:2023-11-28 17:25:06 25 4
gpt4 key购买 nike

我正在使用 pandas DataFrame。当满足特定条件时,我想将列指示符变量分配给 1。我计算特定组的分位数。如果该值在分位数之外,我想将列指示符变量分配给 1。例如,以下代码打印每个组的分位数:

df[df['LENGTH'] > 1].groupby(['CLIMATE', 'TEMP'])['LENGTH'].quantile(.95)]

现在对于我的数据框中所有大于我想要设置的分组值的观察

df['INDICATOR'] = 1

我尝试使用以下 if 语句:

if df.groupby(['CLIMATE','BIN'])['LENGTH'] > df[df['LENGTH'] > 1].groupby(['CLIMATE','BIN'])['LENGTH'].quantile(.95):
df['INDICATOR'] = 1

这给了我错误:“ValueError:操作数无法与形状 (269,) (269,2) 一起广播”。任何帮助,将不胜感激!

最佳答案

您想使用 transform在你的 groupby 之后得到一个同等大小的数组。 gt 大于。 mul 是乘法。我乘以 1 以获得从 gt01 的 bool 结果。

考虑数据框 df

df = pd.DataFrame(dict(labels=np.random.choice(list('abcde'), 100),
A=np.random.randn(100)))

我会得到这样的指标

df.A.gt(df.groupby('labels').A.transform(pd.Series.quantile, q=.95)).mul(1)

在你的情况下,我会做

df['INDICATOR'] = df['LENGTH'].gt(df.groupby(['CLIMATE','BIN'])['LENGTH'] \
.transform(pd.Series.quantile, q=.95)).mul(1)

关于python - 根据观察分位数分配指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com