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

如何在Pandas DataFrame中移除以HOH开头的列表元素

解决方法:移除Pandas DataFrame列表/字符串中以HOH开头的元素

首先得指出你现有代码的小问题:你写的[k for k in x if k.startswith('HOH')]是保留所有以HOH开头的元素,而我们需要的是把这些元素排除掉,所以逻辑要反过来改成if not k.startswith('HOH')。另外还要根据df['res']的实际数据类型(是逗号分隔的字符串还是原生列表)来调整代码,下面分两种情况具体说明:

情况1:df['res']的每个单元格是逗号分隔的字符串

比如你的df['res']内容是类似这样的字符串:

"AL1 A 15, CY1 A 16, CY1 A 20, GL1 A 17, GL1 A 62,HOH A 604, HOH A 605, L21 A 18, MG A 550, PR1 A 36, TH1 A 19, TH1 A 37, TY1 A 34, VA1 A 14, HOH A 603, VA1 A 35"

这种情况下,需要先按, 分割成列表,过滤掉HOH开头的元素,再重新拼接成字符串:

# 分割字符串为列表,过滤后再拼接回字符串
df['res_cleaned'] = df['res'].str.split(', ').apply(
    lambda x: ', '.join([item for item in x if not item.startswith('HOH')])
)

情况2:df['res']的每个单元格已经是列表类型

如果每个单元格本身就是列表(比如["AL1 A 15", "CY1 A 16", ...]),直接用apply过滤即可,不需要额外的字符串分割操作:

# 直接过滤列表中的HOH开头元素
df['res_cleaned'] = df['res'].apply(
    lambda x: [item for item in x if not item.startswith('HOH')]
)

验证结果

不管哪种情况,处理后df['res_cleaned']的内容都会和你期望的一致:

AL1 A 15, CY1 A 16, CY1 A 20, GL1 A 17, GL1 A 62, L21 A 18, MG A 550, PR1 A 36, TH1 A 19, TH1 A 37, TY1 A 34, VA1 A 14, VA1 A 35

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:21:09