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

如何基于索引向pandas DataFrame插入数据,实现MATLAB循环建表功能

实现方案

你原来在MATLAB中使用的「先收集所有行数据、再统一转成表格」的逻辑,在Python中可以完全复用,还能避免循环中频繁操作DataFrame带来的性能损耗:

步骤1:初始化存储容器

提前定义表头,同时初始化空列表用来存储每一行的内容,这个列表就对应你MATLAB代码里的entry数组。

import pandas as pd

# 定义表头,和MATLAB里的header_names作用一致
header_names = ['InvoiceNo', 'Customer', 'InvoiceDate', 'DueDate', 'Terms', 'Location', 'Memo', 'Item',
                'ItemDescription', 'ItemQuantity', 'ItemRate', 'ItemAmount', 'Taxable', 'TaxRate',
                'ServiceDate', 'Email', 'Class']
# 初始化空列表存储所有行数据
entry_rows = []

步骤2:循环写入每一行数据

循环中把当前行的内容整理成和表头顺序一致的列表,直接追加到刚才的空列表中即可,不需要每次都生成DataFrame:

# 对应你给出的内层循环逻辑修改
for i in range(len(item)):
    # 按表头顺序整理单行数据
    row_data = [InvoiceNo, Customer, invoice, due, terms, Location, memo, item[i], item[i], quan[i], rate[i], taxable,
                tax_rate, invoice, email, Class]
    # 追加到行列表中,自动对应下一行位置
    entry_rows.append(row_data)

步骤3:统一转成DataFrame并导出

所有数据收集完成后,一次性生成DataFrame,再导出到文件,和你MATLAB的最终逻辑完全对齐:

# 列表转DataFrame,指定表头
fin_table = pd.DataFrame(entry_rows, columns=header_names)
# 导出到文件,对应MATLAB的writetable,可根据需求换成to_excel等方法
fin_table.to_csv("finish.csv", index=False)

注:如果有特殊场景必须在循环中动态给已有DataFrame加行,可以用pd.concat实现,但数据量较大时性能远低于「列表收集+一次性转表」的方案,非必要不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:06:08