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

如何在pandas列中保留指定列表内的字符串并过滤无关内容

实现方案

核心实现逻辑是将name列的逗号分隔字符串拆分后,匹配保留列表过滤内容,再重新拼接为字符串,两种常用实现方式如下:

1. 轻量场景实现(数据量<10万行,易读性高)

import pandas as pd

# 构造示例数据
df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "name": [
            "Mitty, Kitty",
            "Kandy, Puppy",
            "Judy, Micky, Loudy",
            "Cindy, Judy",
            "Kitty, Wicky",
        ],
    }
)
To_keep_lst = ["Kitty", "Kandy", "Micky", "Loudy", "Wicky"]

# 转为集合提升匹配效率
keep_set = set(To_keep_lst)

# 核心处理逻辑
df['filtered_name'] = df['name'].apply(
    lambda x: ', '.join([item.strip() for item in x.split(',') if item.strip() in keep_set])
)

运行后输出结果:

ID                name     filtered_name
0   1        Mitty, Kitty             Kitty
1   2        Kandy, Puppy             Kandy
2   3  Judy, Micky, Loudy      Micky, Loudy
3   4         Cindy, Judy                  
4   5        Kitty, Wicky     Kitty, Wicky

2. 大数据量场景实现(性能更优)

如果你的数据集行数超过10万,推荐使用pandas向量化操作替代apply提升运行效率:

df['filtered_name'] = df['name'].str.split(',\s*').explode()\
    .loc[lambda x: x.isin(keep_set)]\
    .groupby(level=0).agg(', '.join)\
    .reindex(df.index, fill_value='')

可选:空值处理

如果需要将无匹配项的空字符串替换为NaN,可以补充以下代码:

import numpy as np
df['filtered_name'] = df['filtered_name'].replace('', np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:04