pandas - 熊猫数据框中的 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)
.......
我怎样才能做到这一点?
解决方案
您可以使用 .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”以获取更多信息。
推荐阅读
- reactjs - 为什么它首先呈现“未定义”然后在日志中显示对象
- javascript - 远程视频不显示流
- python - 我可以在容器内运行使用 Docker API 客户端吗?
- python - Pythonnet:用于传入不同类型列表的 C# 代码
- microsoft-graph-api - 微软团队 GraphAPI 返回错误
- r - ggplot中颜色正确的图例?
- python - 如何让它停止告诉我“'int' 对象在第 184 行没有属性 'forward'。”?
- javascript - 渲染Javascript时将textContent合并到一个标题中
- c# - 如何在第一次调用此方法和进一步递归调用时保留“n”的值?
- mysql - MySQL 十进制格式