python - 是否可以在 Pandas 中结合 Isin caluse 和 or 运算符?
问题描述
我有两个看起来像这样的 DF
xx = pd.DataFrame(np.array([[1, 2, 3], [4, 2,1], [7, 2, 9]]),
columns=['a', 'b', 'c'])
yy = pd.DataFrame(np.array([[1, 8, 3,6], [4, 5, 5,2], [7, 2, 9,5]]),
columns=['aa', 'bb', 'cc','dd'])
我定义了一个简单的函数并将其应用于 df yy
def match_logic(row):
if row['aa'] == 5:
return 'OK'
if row['bb'] == 5:
return 'OK'
if row['cc'] == 5:
return 'OK'
if row['dd'] ==5:
return 'OK'
else:
return 'NO'
yy['extra'] = yy.apply(lambda row: match_logic(row), axis=1)
表 yy 现在看起来像这样
我根据下面的简单逻辑创建了一个 new_df
new2 = (yy.aa.isin(xx.a) & yy.bb.isin(xx.b))
new_df = yy[new2]
我想知道是否可以重写逻辑以包含一个“OR”运算符,该运算符还检查“额外”列并包含任何具有“OK”值的行,类似于下面的代码(我知道这是不正确的)
new2 = (yy.aa.isin(xx.a) & yy.bb.isin(xx.b) or yy.extra == 'OK')
所以 New_df 看起来像这样
aa bb cc dd extra
4 5 5 2 OK
7 2 9 5 OK
解决方案
推荐阅读
- java - 使用 JavaMail Api 在电子邮件中插入图像
- ios - 如何以正确的方式在 SwiftUI 中使用颜色?(特别适用于具有 Light 和 DarkMode 的应用程序)
- c# - 如果浏览器打开,请检查 Selenium
- docker - docker compose 将两个服务组合为组
- python - 如何仅将整数(如 25.0)的浮点数更改为整数并将浮点数(如 25.9)保留为 python 中的浮点数
- node.js - npm run deploy 不工作,显示错误
- python - 如何在scrapy selenium中间件中向蜘蛛返回多个响应而不是只返回一次
- python - ValueError:无法将字符串转换为浮点数:'86,5484466552734'
- python - 用返回覆盖保存模型 Django 保存方法
- date - 在 Excel 表单上设置日期格式