组合函数 (AND)

Combining functions (AND)

我有一个关于组合函数的问题。

我的目的是同时应用两个函数。基本上,我想通过寻找数据集最低部分的 5% 分位数和另一端的最高 % 来削减我的数据集的极值。

df = df[df.temperature >= df.temperature.quantile(.05)]

获取高于 5% 分位数的值

df = df[df.temperature <= df.temperature.quantile(.95)]

获取所有低于 95% 分位数的值。

我目前的问题是

df = df[df.temperature >= df.temperature.quantile(.05)]
df = df[df.temperature <= df.temperature.quantile(.95)]

有效,但不精确,因为第二个函数建立在前一个剪辑之上。那么我怎样才能同时切割两者呢?

df = df[df.temperature >= df.temperature.quantile(.05) & <=    df.temperature.quantile(.95)]

无效。

感谢支持!

已解决:

df = df[(df.temperature >= df.temperature.quantile(.05)) & (df.temperature <= (df.temperature.quantile(.95) ))]

由于运算符的优先级,您需要在条件周围加上括号:

f = df[(df.temperature >= df.temperature.quantile(.05)) & (df.temperature <= df.temperature.quantile(.95))]

docs 表明 >= 的优先级低于 & 所以你需要括号,此外你的代码应该引发了一个不明确的错误。

在代码风格方面,将您的条件作为变量更具可读性,因此我将其重写为:

low_limit = df.temperature >= df.temperature.quantile(.05)
upper_limit = df.temperature >= df.temperature.quantile(.95)

那么你的过滤就变成了:

df[(low_limit) & (upper_limit)]

您可以选择更改

low_limit = df.temperature >= df.temperature.quantile(.05)

low_limit = (df.temperature >= df.temperature.quantile(.05))

因此您不需要在筛选中使用括号