有没有一种方法可以根据(另一个)查找中的值计算数据框的新列 table

Is there a way to calculate a new column of a dataframe on base of values in a(nother) lookup table

当计算基于具有不同格式的查找 table 时,是否可以计算结果并将结果添加到现有数据框?

更精确:

我有一个以逗号分隔的文件,我将其作为 pandas 数据帧打开并读入。读入数据框包含 38 个不同的数据列和一个(在读入过程中创建的)数千行的附加索引列:

我的查找 table 包含作为计算基础的值。 同样,它是作为 pandas 数据帧读入的逗号分隔文件。它包含24行6列和一个额外的索引列:

下面是我尝试实现的计算: 在新列“M_A”中,我想写这样的计算结果:

而i代表C00,C01,C02....C22,C23的对应值

虽然 SP、FR、C00、C01、C02 [...] 是“数据”数据框的列部分, PV、W 和 RC_A 是查找 table 数据帧的一部分。 “data”和“lookup”的公共索引参数table是根据查找table的“C”列的C00、C01、C02列的值。当数据列 C00、C01、C02...匹配查找 table 行 C00、C01、C02...

时应取计算值

由于对于这种大小的数据集,迭代不是推荐的解决方案,我没有尝试过但没有找到正确的方法,因为我的查找 table 与我的数据 table 的长度不同。

df_data['A_calc'] = ((df_data.T / (df_data.SF * df_data.SP)) * ((df_data.C00 * df_lookup.PV * df_lookup.W * df_lookup.RC_A) + (df_data.C01 * df_lookup.PV * df_lookup.W * df_lookup.RC_A) + (df_data.C02 * df_lookup.PV * df_lookup.W * df_lookup.RC_A)+ ...)

这会导致错误消息:

AttributeError: 'DataFrame' 对象没有属性 'PTU_Airdensity_recalc'

有没有办法在 Python 中用 Pandas df 实现这一点?也许比我的更优雅,我选择将我的意图形象化...

有什么建议吗?

谢谢斯瓦瓦

因此,根据我的理解,应用该公式;对于每一列 Ci,我们将其与值 PV[i]、W[i]、RC_A[i] 相乘,然后对每个结果求和

result=0

for i in range(len(df_lookup)):
   result=result+(df_data[df_lookup.loc[i,"C"]]*df_lookup.PV.iloc[i] * 
   df_lookup.W.iloc[i] * df_lookup.RC_A.iloc[i])

#result is a  column

#then we multiply element wise

df_data['A_calc'] = ((df_data.T / (df_data.SF * df_data.SP))*multiply(result, axis="index")

此版本正在运行。非常感谢运行 A!

的帮助
result=0

for i in range(len(df_lookup)):
   result=result+(df_data[df_lookup.loc[i,"C"]]*df_lookup.PV.iloc[i] * 
   df_lookup.W.iloc[i] * df_lookup.RC_A.iloc[i])
   #result is a  column

#then we multiply element wise

df_data['A_calc'] = ((df_data.T / (df_data.SF * df_data.SP)).multiply(result, axis="index")

此行与“.”一起工作。代替 ”*”。 但我仍在研究循环...