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

Pandas字符串分割:提取指定索引范围元素的实现方案

Pandas分割字符串并提取指定索引元素的解决方案

问题场景

DataFrame的某一列存了这些字符串:
active_days_revenue、active_days_rate、total_revenue、gap_days_rate

需要完成两个操作:

  • 用下划线作为分隔符分割每个字符串
  • 提取分割后索引0到1的元素,并重新用下划线连接,最终得到结果:
    active_days、active_days、total_revenue、gap_days

之前尝试df['text'].split('_')[:1]无效,df['text'].split('_')[0]只能拿到第一个元素,达不到需求。

解决方法

方法一:用Pandas字符串方法链式调用

直接利用Pandas的str属性提供的字符串处理方法,一步到位:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'text': ['active_days_revenue', 'active_days_rate', 'total_revenue', 'gap_days_rate']
})

# 分割→取前两个元素→重新连接
df['result'] = df['text'].str.split('_').str[:2].str.join('_')
  • str.split('_'):把每个字符串按下划线分割成列表
  • str[:2]:提取列表的前两个元素(对应索引0和1)
  • str.join('_'):将这两个元素用下划线重新拼接成字符串

方法二:用正则表达式提取

如果习惯用正则,也可以直接匹配目标内容:

df['result'] = df['text'].str.extract(r'^([^_]+(?:_[^_]+)?)')

正则表达式^([^_]+(?:_[^_]+)?)的含义:

  • ^:匹配字符串开头
  • [^_]+:匹配一段不含下划线的内容
  • (?:_[^_]+)?:可选的一段“下划线+不含下划线的内容”,实现取前两个分割部分的效果

验证结果

执行上述代码后,df['result']列的输出就是:

0    active_days
1    active_days
2    total_revenue
3    gap_days
Name: result, dtype: object

完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:20:46