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

如何查找pandas DataFrame中列表类型列包含指定字符串的行

pandas筛选列表类型列包含指定值的行的实现方法

因为Addresses列存储的是列表对象,直接用等于判断无法匹配列表内的元素,你可以用以下两种方法实现需求:

  • 方法1:使用apply做逐行成员判断(适合中小体量数据)
    核心逻辑是逐行读取Addresses列的列表,判断目标值是否属于列表成员:
    df1 = df[df['Addresses'].apply(lambda x: 'ei102' in x)]
    
    如果存在列表元素类型不统一的情况,可以加一步类型转换避免匹配失败:
    df1 = df[df['Addresses'].apply(lambda x: 'ei102' in [str(item) for item in x])]
    
  • 方法2:使用explode拆分后匹配(适合大体量数据,性能更优)
    先把列表列的每个元素拆分为独立行,匹配到目标值后通过索引回溯原数据行:
    target_val = 'ei102'
    matched_index = df.explode('Addresses').query("Addresses == @target_val").index
    df1 = df[df.index.isin(matched_index)]
    

完整测试示例

import pandas as pd

# 构造和示例一致的测试数据
df = pd.DataFrame({
    "ID": [3920, 3029],
    "Name": ["Chris", "Jane"],
    "Addresses": [["ab192", "ei102"], ["pe019", "xi201", "de301"]]
})

# 筛选Addresses包含ei102的行
df_result = df[df['Addresses'].apply(lambda x: 'ei102' in x)]
print(df_result)

运行后输出结果:

ID   Name      Addresses
0  3920  Chris  [ab192, ei102]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:18:03