组合函数 (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))
因此您不需要在筛选中使用括号
我有一个关于组合函数的问题。
我的目的是同时应用两个函数。基本上,我想通过寻找数据集最低部分的 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))
因此您不需要在筛选中使用括号