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

如何无for循环优化Pandas多列字符串长度计算查询?

优化Pandas多列字符串长度计算(替代for循环)

直接用Pandas的矢量化操作就能替代for循环,大幅提升处理效率,核心思路是一次性对整个DataFrame执行类型转换和长度计算,而非逐列循环处理。

方案一:分步实现(可读性高)

import pandas as pd

# 1. 一次性将所有列转为string类型并计算每行字符串长度
lengths_df = df.astype("string").str.len()
# 2. 给结果列重命名为len0、len1...格式
lengths_df.columns = [f"len{idx}" for idx in range(len(lengths_df.columns))]
# 3. 将计算结果合并回原DataFrame
df = pd.concat([df, lengths_df], axis=1)

方案二:简洁合并写法

如果追求代码紧凑,可以把步骤合并成一行:

df = pd.concat(
    [df, df.astype("string").str.len().rename(columns=lambda col: f"len{df.columns.get_loc(col)}")],
    axis=1
)

关键优势

Pandas的矢量化操作基于底层C语言实现,避免了Python循环的解释器开销,40列的场景下处理速度会比原循环快数倍甚至更多。

可选优化:仅处理目标列

如果不是所有列都需要计算长度,可以先筛选出目标列再操作,进一步节省资源:

# 假设只需要处理col1、col2、col3这几列
target_cols = ["col1", "col2", "col3"]
lengths_df = df[target_cols].astype("string").str.len()
lengths_df.columns = [f"len{idx}" for idx in range(len(lengths_df.columns))]
df = pd.concat([df, lengths_df], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:42:03