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

如何将输入参数运算结果逐行存入Pandas DataFrame?

问题解决:逐行匹配参数与数值列表运算并生成DataFrame

你当前代码的问题在于每次循环都直接给整列赋值(比如df['Events'] = ...),这会覆盖掉之前所有行的数值,最后整个列只会保留最后一次循环的计算结果。以下是两种解决方案,其中第二种更适合大规模数据集:

方案1:修正循环逻辑(小数据集适用)

直接在循环中定位到具体的行和列进行赋值,而非修改整列:

import pandas as pd

N = 2
df = pd.DataFrame(columns=['Events','Electrons','Photons'], index=range(N))

vals = [1,2,3]
param = [1,2]

for idx in df.index:
    df.loc[idx, 'Events'] = param[idx] + vals[0]
    df.loc[idx, 'Electrons'] = param[idx] + vals[1]
    df.loc[idx, 'Photons'] = param[idx] + vals[2]

方案2:向量化运算(大数据集最优)

利用NumPy的广播机制避免循环,大幅提升运算效率,适合扩展到大规模数据场景:

import pandas as pd
import numpy as np

vals = [1,2,3]
param = [1,2]

# 将param转为列向量,与vals进行广播相加,得到每行对应参数的运算结果
result = np.array(param)[:, np.newaxis] + np.array(vals)

# 直接将结果数组转为DataFrame
df = pd.DataFrame(result, columns=['Events','Electrons','Photons'])

原理说明:np.array(param)[:, np.newaxis]将param转换为形状为(N,1)的列数组,和形状为(3,)的vals相加时,NumPy会自动完成广播扩展,生成(N,3)的结果数组,正好对应每行一个param元素与所有vals的运算结果,无需提前创建空DataFrame,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:31:22