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

如何在Pandas DataFrame中处理含多下划线的字符串列?

处理Pandas DataFrame中EVENT_DTL列的字符串规则转换

核心逻辑

针对EVENT_DTL列里用|分隔的每个子串:

  • 下划线数量≤2:保留原内容
  • 下划线数量>2:移除最后一个下划线及其后的所有字符

具体实现代码

1. 单个子串处理函数

先封装处理单个子串的逻辑,方便复用和调试:

def clean_substring(sub):
    underscore_count = sub.count('_')
    if underscore_count > 2:
        # 定位最后一个下划线的位置,截取前半部分
        return sub[:sub.rfind('_')]
    return sub

2. 整列数据处理方案

方案一:逐行apply处理(直观易读)

适合中小规模数据,逻辑清晰易懂:

import pandas as pd

# 假设你的DataFrame名为df
def process_event_col(val):
    # 兼容空值或非字符串类型,避免报错
    if pd.isna(val) or not isinstance(val, str):
        return val
    # 分割子串→逐个清理→重新拼接
    parts = val.split('|')
    cleaned_parts = [clean_substring(part) for part in parts]
    return '|'.join(cleaned_parts)

# 应用到目标列
df['EVENT_DTL'] = df['EVENT_DTL'].apply(process_event_col)
方案二:向量化处理(高效适配大数据)

针对10000行的规模,用向量化方法能提升处理效率:

# 拆分列→批量清理子串→重新聚合为原格式
df['EVENT_DTL'] = (df['EVENT_DTL']
                   .str.split('|', expand=True)  # 按|拆分为多列
                   .applymap(clean_substring)    # 对每个元素执行清理
                   .agg('|'.join, axis=1))       # 按行重新拼接成字符串

效果验证

比如输入子串Pesticide_Spreading agent_Kava_999,经过处理后会返回Pesticide_Spreading agent_Kava;若子串下划线数量≤2(如Test_Example),则直接保留原内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:55:22