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

如何对Pandas数据框列中字符串按两种规则筛选保留元素?

Pandas数据框两种处理方案

原始数据定义

import pandas as pd
df = pd.DataFrame({'Temp' : ['ko1234', 'ko1234|ko445|ko568', 'map123', 'ko895', 'map123|ko889|ko665', 'ko635|map789|map777', 'ko985']})

需求1:仅保留以ko开头的词汇,无符合项则留空

直接通过字符串拆分、筛选、合并完成:

df['Temp_ko_filtered'] = df['Temp'].str.split('|').apply(
    lambda x: '|'.join([item for item in x if item.startswith('ko')])
)

执行后Temp_ko_filtered列的结果:

ko1234
ko1234|ko445|ko568
    
ko895
ko889|ko665
ko635
ko985

逻辑说明:按|拆分每个单元格内容为列表,筛选出以ko开头的元素,再用|拼接回字符串;无符合项时拼接结果为空字符串。


需求2:单个词汇保留,多词汇仅保留第二个

有两种高效实现方式:

方式一:Lambda判断列表长度

df['Temp_second'] = df['Temp'].str.split('|').apply(
    lambda x: x[1] if len(x) >= 2 else x[0]
)

方式二:Pandas字符串方法链(更简洁)

df['Temp_second'] = df['Temp'].str.split('|').str.get(1).fillna(df['Temp'])

执行后Temp_second列的结果:

ko1234
ko445
map123
ko895
ko889
map789
ko985

逻辑说明:

  • 方式一:拆分后判断列表长度,长度≥2则取第二个元素(索引1),否则取第一个元素(索引0);
  • 方式二:拆分后用str.get(1)提取第二个元素,无第二个元素时返回NaN,再用原列值填充NaN,实现单个词汇保留的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:57:23