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

从DataFrame中提取字符串指定部分并将字符型数字转为整数

解决字符型DataFrame的文本与数字提取及类型转换问题

没问题,我来帮你搞定这个需求!针对你字符型DataFrame的提取和类型转换需求,咱们可以用pandas结合正则表达式来轻松实现,步骤清晰又高效:

核心思路

你的数据格式应该是文本内容 + 空格 + 结尾数字的结构,我们需要:

  1. 精准提取结尾数字前的所有文本(包括文本内部的空格)
  2. 提取结尾的数字字符串并转换为整数类型
  3. 将这两部分作为新列保留在原DataFrame中

代码实现示例

首先假设你的DataFrame有一列需要处理的字符数据(这里用col作为列名,你可以替换成实际列名):

import pandas as pd

# 构造示例DataFrame(模拟你的数据结构)
data = {'col': ['Red Apple 5', 'Banana 10', 'Fresh Orange 3', 'Grape 7']}
df = pd.DataFrame(data)

# 1. 同时提取文本部分和数字字符串部分
# 正则表达式解释:
# (.*) 匹配最后一个空格前的所有字符(包含文本内的空格)
# \s 匹配分隔文本和数字的空格(如果有多个空格,改成\s+更鲁棒)
# (\d+$) 匹配结尾的一个或多个数字
df[['text_part', 'num_str']] = df['col'].str.extract(r'(.*)\s(\d+)$')

# 2. 将字符型数字转换为整数类型
df['num_part'] = df['num_str'].astype(int)

# 可选:如果不需要中间的num_str列,可以删除它
df = df.drop('num_str', axis=1)

执行完上述代码后,你的DataFrame会新增text_part(提取的文本)和num_part(整数类型的数字)两列,完全符合你的需求。

特殊情况处理

如果你的数据存在一些特殊格式,可以针对性调整正则表达式:

  • 多个空格分隔文本与数字:把正则改成r'(.*)\s+(\d+)$'(\s+匹配一个或多个空格)
  • 需要提取小数而非整数:把\d+改成\d+\.?\d*,转换类型时用astype(float)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:50:25