Pandas 按位过滤在带括号和不带括号的情况下给出不同的结果

罗杰里奥·洛萨诺

我有一个熊猫数据框,我想过滤掉一些不满足某些条件的记录:

cond1=df['ap_lo'] <= df['ap_hi']
cond2=df['height'] >= df['height'].quantile(q=0.025)
cond3=df['height'] <= df['height'].quantile(q=.957)
cond4=df['weight'] >= df['weight'].quantile(q=0.025)
cond5=df['weight'] <= df['weight'].quantile(q=0.975)

这给出了原始数据的以下百分比:

filtered_df=df[cond1 & cond2 & cond3 & cond4 & cond5]
print(filtered_df.shape[0] / df.shape[0]) 
>>>0.8865

令我惊讶的是,当我尝试相同但在条件之间使用括号而不是预定义条件变量时,我得到了不同的结果:

filtered_df = df[(df['ap_lo'] <= df['ap_hi']) & 
                 (df['height'] >= df['height'].quantile(0.025)) &
                 (df['height'] <= df['height'].quantile(0.975)) &
                 (df['weight'] >= df['weight'].quantile(0.025)) & 
                 (df['weight'] <= df['weight'].quantile(0.975))]
print(filtered_df.shape[0] / df.shape[0])
>>> 0.9037

到底是怎么回事?我不认为这与执行这些操作的顺序有关,因为据我记得 AND 是关联和可交换的......

矮人

@luuk 的评论是正确的;问题是您在第三个条件的第二个定义中转置了数字。

import pandas as pd
import numpy as np

df = pd.DataFrame(data=np.random.uniform(size=(250,4)), columns=['ap_hi', 'ap_lo', 'height', 'weight'])

a = (df['height'] <= df['height'].quantile(q=0.975))
b = (df['height'] <= df['height'].quantile(q=0.957))
print((a == b).all())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在带和不带括号的情况下打印时会给出__str __()和__repr __()

在R中不带方括号的情况下打印结果

awk (gnu awk) 打印比较带和不带括号有不同的结果

Datetime 模块和 Pandas to_datetime 给出不同的结果

pandas.DataFrame为什么使用括号来包装操作以进行按位比较

在Python上不带括号的情况下打印列表

React默认情况下会调用useState而不带括号

如何在不带引号和括号的情况下将整数值写入文件

如何在不带括号和逗号的情况下打印列表python

Pandas 将列内容与关键字匹配(带空格和括号)

如何在 Pandas 中删除带括号的行

带和不带括号的类实例化

Pandas:从列表中删除括号?

带字符串的String.raw仅在不带括号的情况下有效

VBA在带或不带括号的情况下调用Sub或Function的根本区别是什么

实例化课程-带括号和不带括号的区别

python中带括号和不带括号的函数之间的区别

带括号和不带括号的案例类之间的区别

在不使用Pandas或Numpy的情况下按CSV字段计算寄存器数

按索引和列值过滤 Pandas

按索引和按列过滤DataFrame时pandas的不同行为

pandas dataframe where子句,带点和括号的列选择

Python-使用Pandas消除花括号和输出浮点

如何在使用unix shell脚本的情况下添加左括号和右括号

使用loc和仅使用方括号来过滤Pandas / Python中的列有什么区别?

在addEventListener中如何在不带括号的情况下使用该函数?

如何在不带括号的情况下将数组写入CVS?

我可以在不带Java括号的情况下访问Scala对象的val吗?

寻找json键以在python中不带括号的情况下打印其内容