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

如何在Python的pandas DataFrame中删除字符串列末尾的字母字符

解决方案

你可以直接使用pandas内置的字符串处理方法搭配正则实现需求,不需要额外单独调用re库方法:

方案1:严格按字面需求实现(所有末尾为字母的字符串都删除最后一位)

代码如下:

import pandas as pd

data = {'postcode': ['DG14','EC3M','BN45','M2','WC2A','W1C','PE35'], 'total':[44, 54,56, 78,87,35,36]}
df = pd.DataFrame(data)

# 核心处理逻辑:匹配末尾的字母,替换为空
df['postcode'] = df['postcode'].str.replace(r'[A-Za-z]$', '', regex=True)
print(df)

输出结果:

postcode  total
0     DG14     44
1      EC3     54
2     BN45     56
3       M2     78
4      WC2     87
5       W1     35
6     PE35     36

方案2:匹配你给出的示例期望结果(仅4位长度字符串的末尾字母才删除)

如果你的真实需求是仅4位长度的邮编才删除末尾字母,保留3位长度邮编的末尾字母,可以用带断言的正则实现,输出和你给出的期望完全一致:

import pandas as pd

data = {'postcode': ['DG14','EC3M','BN45','M2','WC2A','W1C','PE35'], 'total':[44, 54,56, 78,87,35,36]}
df = pd.DataFrame(data)

# 核心处理逻辑:仅匹配4位字符串末尾的字母,替换为空
df['postcode'] = df['postcode'].str.replace(r'(?<=^.{3})[A-Za-z]$', '', regex=True)
print(df)

输出结果:

postcode  total
0     DG14     44
1      EC3     54
2     BN45     56
3       M2     78
4      WC2     87
5      W1C     35
6     PE35     36

正则说明

  • [A-Za-z]:匹配任意大小写英文字母
  • $:限定匹配位置在字符串的末尾
  • (?<=^.{3}):正向回顾断言,限定匹配的字符前方必须是从开头数的3个字符,即整个字符串总长度为4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:09:03