如何用一行代码按多列值过滤Pandas DataFrame?
一行代码实现DataFrame多列过滤
当然可以用一行代码完成多列过滤,你之前报错是因为Pandas对布尔序列的逻辑判断不支持Python原生的and/or,得用向量化的运算符&(逻辑与)、|(逻辑或),而且每个条件必须加括号避免优先级问题。下面是几种可行的写法:
- 用布尔索引+
&运算符:
mini_df = df[(df['col1'] == 0) & (df['col2'] == 1)]
- 用
query方法(语法更简洁,接近自然语言):
mini_df = df.query('col1 == 0 and col2 == 1')
- 用
loc明确指定行过滤(更规范,避免隐式索引问题):
mini_df = df.loc[(df['col1'] == 0) & (df['col2'] == 1), :]
如果需要添加更多过滤条件,直接用&继续拼接(每个条件加括号),或者在query里用and连接即可。
内容的提问来源于stack exchange,提问作者alberto
相关产品推荐
相关产品推荐

