You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Pandas的.loc方法基于列表实现数据筛选?

问题解答

不能直接用df.loc[df[['col1', 'col2']] == ['this', 'that']]这种写法实现你想要的筛选逻辑,原因是:
当对多列DataFrame和列表做相等比较时,Pandas会把列表广播成与DataFrame同形状的结构,逐元素比较后得到的是布尔型DataFrame,而.loc需要的是一维的逐行判断布尔序列。

如果想筛选出**col1等于'this'且col2等于'that'**的行,推荐两种正确写法:

方法1:用逻辑与(&)连接单列条件

df.loc[(df['col1'] == 'this') & (df['col2'] == 'that')]

注意给每个条件单独加括号,避免运算符优先级导致的逻辑错误。

方法2:逐行匹配目标值

先把目标值构造成与列名对应的Series,再逐行验证所有列是否匹配:

import pandas as pd
target = pd.Series(['this', 'that'], index=['col1', 'col2'])
df.loc[df[['col1', 'col2']].eq(target).all(axis=1)]

.eq(target)会按列匹配目标值,.all(axis=1)确保每行的所有列都满足条件,最终生成.loc可用的一维布尔序列。

内容的提问来源于stack exchange,提问作者GeorgeLPerkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:39:54