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

Python Pandas:如何筛选两列值匹配且属指定列表的行?

Pandas DataFrame 筛选符合条件的行

需求分析

需要筛选同时满足以下两个条件的行:

  • Letters列与Value列的值完全相等
  • 该匹配值属于指定列表 first_2 = ['AB','DA']

原代码问题分析

原代码的筛选逻辑完全偏离需求:

df1 = df[(~df['Letters'].str[0:1].isin(first_2)) & (df['Value'].isin(first_2))]
  • df['Letters'].str[0:1] 取的是Letters列每个值的第一个字符(比如'AB'取成'A'),和需求里的完整值匹配无关
  • ~ 符号是取反操作,逻辑上和需要的条件相反

正确实现代码

直接组合两个核心条件即可:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Letters':('AB','BD','AB','DA','EG','FA'),
    'Value':('AB','BC','DA','DA','EH','FA'),
    'Position':(1,np.nan,3,4,np.nan,6),
})

first_2 = ['AB','DA']

# 正确筛选代码
df_filtered = df[(df['Letters'] == df['Value']) & (df['Letters'].isin(first_2))]
print(df_filtered)

输出结果

Letters Value  Position
0      AB    AB       1.0
3      DA    DA       4.0

补充说明

因为要求Letters和Value完全相等,所以也可以用df['Value'].isin(first_2)替代df['Letters'].isin(first_2),结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:34:51