如何通过析取语句(逻辑“或”)对 pandas DataFrame 进行切片? [复制]
Posted
技术标签:
【中文标题】如何通过析取语句(逻辑“或”)对 pandas DataFrame 进行切片? [复制]【英文标题】:How to slice pandas DataFrame by disjunction statement (logical "or")? [duplicate] 【发布时间】:2016-12-22 06:31:50 【问题描述】:我想对满足条件 A 或条件 B 的 pandas.DataFrame
进行切片。大多数搜索结果仅显示如何使用 "and" 对数据帧进行切片。所以我想知道是否可以使用 "or" 运算符而不将 (A and B) 转换为 (not (not A and not B))?因为有时需要很多“或”条件,转换可能很麻烦。
我尝试使用:
df[(df['c1']==x1) or (df['c2']==x2)]
但它不起作用。
【问题讨论】:
切片的工作方式是遍历每个单元格并检查真值,因此任何逻辑语句都可以进入 [] 【参考方案1】:你需要使用逻辑或符号|
df[(df['c1'] == x1) | (df['c2'] == x2)]
对于and
,您需要使用&
df[(df['c1'] == x1) & (df['c2'] == x2)]
【讨论】:
确实是按位或符号,但是逻辑上的or
由于短路问题不能重载,所以Pandas不得不改用|
。以上是关于如何通过析取语句(逻辑“或”)对 pandas DataFrame 进行切片? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
数理逻辑命题逻辑的等值演算与推理演算 ( 命题逻辑 | 等值演算 | 主合取 ( 析取 ) 范式 | 推理演算 ) ★★