如何在pandas DataFrame中按分号拆分列并计算子串长度并导出XLSX
解决方案
实现逻辑(向量化高效处理)
直接利用pandas的字符串向量化方法,避免低效循环,一步完成拆分、长度计算和结果拼接:
import pandas as pd # 示例数据(替换为你的实际DataFrame) df1 = pd.DataFrame({ 'Part_Number': ['123; 345', '54; 8903'] }) # 核心处理:拆分列→计算每个子串长度→用'; '拼接结果 df1['Part_Number_valid'] = df1['Part_Number'].str.split('; ')\ .apply(lambda lst: '; '.join(str(len(item)) for item in lst)) # 查看处理后的结果 print(df1)
执行后输出:
Part_Number Part_Number_valid 0 123; 345 3; 3 1 54; 8903 2; 4
导出为XLSX文件
使用to_excel方法导出,需确保安装了openpyxl依赖(用于.xlsx格式支持):
# 若未安装依赖,先执行此命令 # pip install openpyxl # 导出文件,index=False不写入行索引 df1.to_excel('处理结果.xlsx', index=False)
原代码问题说明
- 效率低下:使用
iterrows()逐行循环,大数据集下性能远不如pandas向量化操作 - 格式错误:将长度列表转成字符串后直接拼接,会得到
"[3, 3]"这类不符合需求的格式,正确做法是遍历长度值转字符串后用;连接 - 赋值逻辑错误:
df1['Part_Number'].replace(...)是全局替换,而非给当前行的新列赋值,即便修正赋值方式,循环效率仍不如向量化方案
内容的提问来源于stack exchange,提问作者Renan Nakamoto
相关产品推荐
相关产品推荐

