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

如何向量化追加长度不匹配的列表行到Pandas DataFrame以提速

优化Pandas批量插入行的性能方案

问题根源

你当前用循环df.append()的方式性能极差,核心原因是每次append都会创建新的DataFrame对象,伴随大量内存复制操作,数据量越大,开销呈指数级增长。

两种高效优化方案

方案1:直接将拆分后的列表转为DataFrame

利用Pandas可以直接接受列表生成DataFrame的特性,缺失的列会自动填充NaN,一步完成构建:

import pandas as pd

myList = ['a/b/c','a/b','a','a/b/c']
# 用列表推导式完成拆分,比map更直观
split_list = [item.split('/') for item in myList]  
# 直接生成DataFrame并指定列名
df = pd.DataFrame(split_list, columns=['col1', 'col2', 'col3'])

print(df)

方案2:使用Pandas向量化的str.split方法(推荐)

Pandas的字符串方法本身就是向量化实现的,无需手动循环或map,性能最优:

import pandas as pd

myList = ['a/b/c','a/b','a','a/b/c']
# 先转成Series,直接调用向量化拆分方法
series = pd.Series(myList)
# expand=True将拆分结果展开为多列
df = series.str.split('/', expand=True)
# 给列重命名
df.columns = ['col1', 'col2', 'col3']

print(df)

额外说明

如果后续遇到拆分后子列表长度超过列数的情况(你当前场景不会出现),可以通过切片限制列数:

df = series.str.split('/', expand=True).iloc[:, :3]  # 只取前3列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:05:33