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

如何过滤含列表值的DataFrame:筛选C列不含'b'的行

筛选DataFrame中列表列不含指定元素的行

问题背景

你的DataFrame结构如下(C列存储列表):

A B C
x 3 ['a',1,2,'b']
y 2 ['c',4,6,'b']
z 1 ['d',5,7,'e']

需要筛选出C列中不含'b'的行,预期结果仅保留最后一行。

解决方案

步骤1:读取CSV并转换C列为实际列表类型

CSV文件中存储的列表本质是字符串格式,需要先转换成Python列表:

import pandas as pd
import ast

# 读取CSV文件
df = pd.read_csv('your_file.csv')
# 将C列的字符串形式列表转为实际列表
df['C'] = df['C'].apply(ast.literal_eval)

步骤2:筛选目标行

由于df.query更适合处理原生数值/字符串列,针对列表列的筛选,用apply配合lambda表达式更直接:

# 筛选C列不含'b'的行
filtered_df = df[df['C'].apply(lambda lst: 'b' not in lst)]

执行后filtered_df的结果即为:

A  B               C
z  1  ['d', 5, 7, 'e']

补充说明

如果一定要用df.query,可以先创建一个辅助标记列,再通过query筛选:

# 添加辅助列标记是否不含'b'
df['has_no_b'] = df['C'].apply(lambda lst: 'b' not in lst)
# 用query筛选
filtered_df = df.query('has_no_b == True').drop('has_no_b', axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:10:21