首页 > 解决方案 > 熊猫数据框中的 Excel sumproudct 函数

问题描述

好的,作为一个 python 初学者,我发现 pandas 数据帧中的乘法矩阵很难进行。

我有两张桌子看起来像:

  df1 

      Id    lifetime    0    1    2    3    4    5  .... 30 
  0    1      4        0.1   0.2  0.1  0.4  0.5  0.4...  0.2
  1    2      7        0.3   0.2  0.5  0.4  0.5  0.4...  0.2
  2    3      8        0.5   0.2  0.1  0.4  0.5  0.4...  0.6
   .......
  9    6      10       0.3   0.2  0.5  0.4  0.5  0.4...  0.2

  df2 

     Group lifetime      0    1    2    3    4    5  .... 30 
  0    2      4        0.9   0.8  0.9  0.8  0.8  0.8...  0.9
  1    2      7        0.8   0.9  0.9  0.9  0.8  0.8...  0.9
  2    3      8        0.9   0.7  0.8  0.8  0.9  0.9...  0.9
   .......
  9    5      10       0.8   0.9  0.7  0.7  0.9  0.7...  0.9

我想在我的代码中执行 excel 的 sumproduct 函数,并且需要求和的列的长度基于两个 dfs 的第 1 列中的生命周期,例如,

 for row 0 in df1&df2, lifetime=4:
 sumproduct(df1 row 0  from column 0 to column 3,
            df2 row 0 from column 0 to column 3)

  for row 1 in df1&df2, lifetime=7
  sumproduct(df1 row 2 from column 0 to column 6,
             df2 row 2 from column 0 to column 6)

  .......

我怎样才能做到这一点?

标签: pandas

解决方案


您可以使用 .iloc 访问具有整数的行和列。因此,lifetime==4 是第 0 行,如果计算 Id 为零的列号,则标记为 0 的列将为 2,标记为 3 的列将为 5,要获得该间隔,您将输入 2:6 . 使用.iloc[0,2:6]在两个数据帧中获得正确数据后,运行 np.dot 见下文:

import numpy as np
np.dot(df1.iloc[0,2:6], df2.iloc[1,2:6])

只是为了确保您拥有正确的数据,请尝试运行

df1.iloc[0,2:6]

然后尝试 np.dot 产品。您可以阅读“pandas iloc”和“slicing”以获取更多信息。


推荐阅读