好吧,作为python的初学者,我发现熊猫数据帧中的乘法矩阵很难执行。
我有两个表格如下:
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函数,并且需要求和的列的长度基于两个df的第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)
.......
我该怎么做?
答案 0 :(得分:0)
您可以使用.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”和“切片”以了解更多信息。