gpt4 book ai didi

python - 查找同时满足两个条件的行

转载 作者:行者123 更新时间:2023-12-05 09:27:27 25 4
gpt4 key购买 nike

假设我有一个数据框:

<表类="s-表"><头>做<日>再 <日>米 发所以<正文>10福1005011栏752000正确595911错误012

我将如何找到“Do”和“Re”列中的值都等于 1 且“Fa”高于“So”的所有行?

我尝试了几种方法,但他们首先返回一个错误,提示歧义: df['both_1']=((df['Do'] > df['Re']) & (df['Mi'] == df['Fa'] == 1))

我也尝试将其分解为多个步骤,但我意识到最后一步将导致我同时引入 True 和 False 语句。我只想要 True。

    
df['Do_1'] = df['Do'] == 1

df['Re_1'] = df['Re'] == 1

# This is where I realised I'm bringing in the False rows too
df['both_1'] = (df['Do1'] == df['Re_1'])```

最佳答案

按位 AND 的另一个 & 链掩码:

df['both_1']= (df['Fa'] > df['So']) & (df['Do'] == 1) & (df['Re'] == 1)

print (df)
Do Re Mi Fa So both_1
0 1 0 Foo 100 50 False
1 1 1 Bar 75 20 True
2 0 0 True 59 59 False
3 1 1 False 0 12 False

或者,如果可能,列表中的多个列按子集 df[['Do', 'Re']] 过滤列,并通过 DataFrame.all 测试是否所有为真:

df['both_1']= (df['Fa'] > df['So']) & (df[['Do', 'Re']] == 1).all(axis=1)

如果需要过滤器使用boolean indexing :

df1 = df[(df['Fa'] > df['So']) & (df['Do'] == 1) & (df['Re'] == 1)]

对于第二种解决方案:

df1 = df[(df['Fa'] > df['So']) & (df[['Do', 'Re']] == 1).all(axis=1)]

关于python - 查找同时满足两个条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72430729/

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