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

Vaex如何将空格分隔的单列文本拆分为多个列

Vaex 字符串列拆分问题解决方案

1. No memory tracker found with name default 报错修复

这个报错是Vaex旧版本的已知兼容问题,两种修复方式二选一即可:

  • 直接升级Vaex到最新稳定版本,执行命令:pip install --upgrade vaex
  • 如果暂时无法升级,在代码最开头、导入vaex后添加配置显式指定内存追踪器:
import vaex
vaex.settings.main.memory_tracker.default = "process"

2. 单列按空格拆分为多列实现方案

你之前用的Pandas实现是rsplit后转多列,Vaex原生提供了向量化的字符串拆分接口,不要直接对split结果调用普通apply:Vaex的apply是逐行执行Python函数,性能远低于原生向量化操作,且旧版本下容易触发类型识别错误。
根据你的场景选对应方法即可:

场景1:已知拆分后固定列数(性能最优,推荐)

如果所有行按空格拆分后的元素个数固定,直接给str.split传expand=True参数即可直接生成多列,等效于Pandas的split/rsplit expand效果:

import vaex
import pandas as pd

# 测试数据构造
df = pd.DataFrame({'ticker' : ['spx 5/25/2001 p500', 'spx 5/25/2001 p600', 'spx 5/25/2001 p700']})
df_vaex = vaex.from_pandas(df)

# 从左往右按空格拆分,拆为3列直接赋值
df_vaex[['asset', 'trade_date', 'strike_price']] = df_vaex.ticker.str.split(pat=' ', n=2, expand=True)

如果需要实现Pandas里rsplit(从右往左拆分)的效果,加reverse=True参数即可:

# 从右往左拆分,等效于pd.Series.str.rsplit
df_vaex[['asset', 'trade_date', 'strike_price']] = df_vaex.ticker.str.split(pat=' ', n=2, expand=True, reverse=True)

场景2:拆分后列数不固定

如果每行拆分后的元素个数不统一,可以先获取拆分后的列表列,再通过索引提取对应位置的元素生成新列,不存在的索引位置会自动填充为缺失值:

# 生成拆分后的列表列
split_result = df_vaex.ticker.str.split(pat=' ')
# 提取对应位置元素,比如取最后一段
df_vaex['last_segment'] = split_result.str[-1]
# 取第一段
df_vaex['first_segment'] = split_result.str[0]

提示:Vaex的字符串数组原生支持列表索引操作,直接用.str[索引]取值即可,不需要写lambda函数走apply逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:15:34