Python 熊猫条件切片,同时使用“和”和“或”

Python 熊猫条件切片,同时使用“和”和“或”,python,pandas,Python,Pandas,这只是一个简短的问题,回答是或不是。我在谷歌上找不到答案,或者在这里很难找到答案 我只是想知道我这样做是否正确 我正在尝试选择符合特定条件的数据。这是我代码中的一个片段 c1 = (data['recency']<=3) # seen in the last 3 months c2 = (data['transactions_per_month']>=1) # buys a ticket once a month c3 = (data['av_spend_per_month']>

这只是一个简短的问题,回答是或不是。我在谷歌上找不到答案,或者在这里很难找到答案

我只是想知道我这样做是否正确

我正在尝试选择符合特定条件的数据。这是我代码中的一个片段

c1 = (data['recency']<=3) # seen in the last 3 months
c2 = (data['transactions_per_month']>=1) # buys a ticket once a month
c3 = (data['av_spend_per_month']>=30) # spends at least €30 per month
c4 = (data['Driver']==1) # is a driver

# slice the df
data[c1 & (c2 | c3) & c4]
这部分正确吗?C2*C3可以在我的条件下添加一个条件吗?< /P>
如果是错误的,正确的方法是什么?

是的,这是一个完全合理的做法

根据Pandas手册,您可以使用诸如&、|和~,等布尔运算符组合多个选择器

另一种常见的操作是使用布尔向量来过滤数据。运算符为:| for or、&for and和~ for not。必须使用括号对这些表达式进行分组,因为默认情况下Python会将df['A']>2和df['B']<3等表达式计算为df['A']>2和df['B']<3,而所需的计算顺序为df['A']>2和df['B']<3

你也可以探索这个方法,它可以完成类似的事情。

是的,但它需要像数据一样[col1>10或col2是的,你可以。@venky_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。条件定义周围的括号使其看起来像是包含序列的元组对象,这就是我再次使用括号的原因