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

如何在Python DataFrame指定列中替换并截取字符串?

Pandas 指定列字符串处理与整表导出方案

需求

对DataFrame中*Customer Code列的字符串执行以下操作:

  • 将开头的0替换为GIF
  • 截取前5个字符(例:0369BODMIN → GIF369)
  • 要求结合正则表达式实现,且导出完整DataFrame而非单列

问题分析

你的代码中直接将customer_data替换为目标列的Series,导致导出仅包含该列,而非整个数据表:

import pandas as pd
customer_data = pd.read_csv(r'C://customers.csv')
# 错误:覆盖了整个DataFrame,只剩单列
customer_data = customer_data['*Customer Code'].apply(lambda x: x.replace('0','GIF',1)[:6])
customer_data.to_csv('customersMerged.csv', index=False)

解决方案

方案1:正则表达式实现(推荐)

用正则精准匹配开头的0进行替换,再截取前5位,直接修改原列,保留整个DataFrame:

import pandas as pd

customer_data = pd.read_csv(r'C://customers.csv')
# 正则替换开头的0为GIF,再截取前5个字符
customer_data['*Customer Code'] = customer_data['*Customer Code'].str.replace(r'^0', 'GIF', regex=True).str[:5]
# 导出完整DataFrame
customer_data.to_csv('customersMerged.csv', index=False)
  • ^0:正则锚定字符串开头的0,避免替换字符串中间的0
  • .str[:5]:截取前5个字符,直接得到目标结果

方案2:优化原lambda写法

如果想保留原替换逻辑,只需修改赋值方式,不覆盖整个DataFrame:

import pandas as pd

customer_data = pd.read_csv(r'C://customers.csv')
# 直接修改目标列,不替换整个DataFrame
customer_data['*Customer Code'] = customer_data['*Customer Code'].apply(lambda x: x.replace('0','GIF',1)[:5])
customer_data.to_csv('customersMerged.csv', index=False)
  • 注意将原代码的[:6]改为[:5],匹配示例中5位的输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:27:21