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

Python data.table正则使用(除re.match)及列转整数报错求助

Python data.table 正则使用与列转换问题解答

1. Python data.table 中能否使用除 re.match 外的正则表达式?

可以。Python data.table 支持结合 Python 的 re 模块使用各类正则函数(如 re.sub、re.search 等),但需要注意向量化处理——因为 re 模块的函数默认只处理单个字符串,直接作用于整列会报错,需通过向量化方法对列中每个元素逐一处理。

2. 解决列转换失败的问题

你遇到的 TypeError 本质是 re.sub 无法直接处理 data.table 的列对象(向量),必须逐元素应用正则替换。以下是修正后的可行方案:

方案一:使用 lapply 逐元素处理

import re
from datatable import dt, f, update, as_type

# 假设 df 是 datatable.Frame 对象
df[:, update(weird_col = dt.lapply(f.weird_col, lambda x: re.sub(r"\.[0-9]{0,2}|-", "", str(x))))]
# 转换为整数
df[:, update(weird_col = as_type(f.weird_col, int))]

方案二:结合 np.vectorize 向量化 re.sub

import re
import numpy as np
from datatable import dt, f, update, as_type

# 包装 re.sub 为向量化函数
vectorized_sub = np.vectorize(lambda x: re.sub(r"\.[0-9]{0,2}|-", "", str(x)))
df[:, update(weird_col = vectorized_sub(f.weird_col))]
# 转整数
df[:, update(weird_col = as_type(f.weird_col, int))]

关键注意点:

  • 必须先将列元素转为字符串(str(x)),避免因列中存在非字符串类型(如数值、缺失值)导致报错;
  • 使用 data.table 的 update 语法时,通过 f.colname 引用列更符合 data.table 的语法规范,而非直接用 df[:, 'colname'];
  • 替换完成后,用 as_type 显式转换为整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:43:15