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

如何在Pandas DataFrame数组转整数时删除元素附带的字母字符

解决方案

你原来的写法存在两个明显问题:一是逐行链式索引赋值效率极低,且容易触发SettingWithCopyWarning导致赋值失效;二是没有提前清洗带后缀非数字字符的字符串,直接转int必然报错。

直接用正则提取每个字符串开头的连续数字段再转类型即可,不用逐字符判断,整列用apply处理比写循环索引高效得多:

  • 第一步:导入正则库
import re
  • 第二步:定义针对单个数组的清洗逻辑
def clean_arr(arr):
    # 匹配每个字符串开头的连续数字,直接转整数
    return [int(re.search(r'^\d+', item).group()) for item in arr]
  • 第三步:一次性处理整列数据
df['ColumnA'] = df['ColumnA'].apply(clean_arr)

效果验证

拿你给出的第37行样本测试:
原数组里的'62A'、'62B'会被提取开头的62转成整数,其余纯数字字符串正常转换,最终得到全int类型的数组,不会触发类型转换报错。

异常兼容(可选)

如果你的数据里可能存在开头无数字的异常值(比如全字母字符串、空值),可以给清洗逻辑加个判断避免抛错:

def clean_arr(arr):
    cleaned = []
    for item in arr:
        num_match = re.search(r'^\d+', item)
        if num_match:
            cleaned.append(int(num_match.group()))
        # 异常值可按需处理:比如跳过、补默认值0、存为None都可以
    return cleaned

注意:不要继续用for i in range(len(df))+df[列名][i]的写法,这种链式索引在pandas中属于不推荐的操作,赋值结果不可控,用矢量化操作或者apply处理列是更稳妥的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:42:34