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

如何移除Pandas DataFrame列中数字末尾字母并解决NaN问题

问题原因

你的hole_ID_MWD列混合了字符串类型(如115b)和数值类型(如490、500)。Pandas的.str系列方法仅对字符串类型单元格生效,非字符串类型的单元格会被直接转为NaN,这就是纯数字单元格出现NaN的原因。

解决方案

推荐以下两种精准且避免NaN的处理方式:

方法1:先转字符串再正则替换(推荐)

先将整列转为字符串类型,再用正则仅移除末尾的小写字母(比替换所有非数字更严谨,避免误删其他合法字符):

df12['hole_ID_MWD'] = df12['hole_ID_MWD'].astype(str).str.replace(r'[a-z]$', '', regex=True)
  • 正则[a-z]$:仅匹配字符串末尾的单个小写字母,完美匹配你的需求场景。
  • astype(str):确保所有单元格都以字符串形式处理,避免非字符串类型触发NaN。

方法2:用apply+rstrip处理

通过apply遍历每个元素,转为字符串后用rstrip直接移除末尾的小写字母:

def clean_hole_id(val):
    return str(val).rstrip('abcdefghijklmnopqrstuvwxyz')

df12['hole_ID_MWD'] = df12['hole_ID_MWD'].apply(clean_hole_id)

这种方式逻辑直观,适合对正则不熟悉的场景。

验证效果

处理后你的示例数据会得到期望输出:

索引hole_ID_MWD
0115
1225
219
3490
4500
5600

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:40:09