在Python中将两个数据框中的两列相乘并求和

发布于 2025-01-10 10:17:53 字数 233 浏览 1 评论 0原文

我有两个数据框,都有 6 行。我想将两个数据帧(每个 df 一个)中两个选定列中的值相乘,

result = sum(a * b for a, b in zip(list(df1['col1']), list(df2['col3'])))

我似乎没有得到我想要的。我在 Excel 中“手动”进行了计算(针对我的时间序列中的一个日期),这给了我预期的结果。所以我的问题是我是否做错了什么?

I have two dataframes both with 6 rows. I want to multiply the values in two selected columns from the two dataframes (one from each df)

result = sum(a * b for a, b in zip(list(df1['col1']), list(df2['col3'])))

I do not seem to get what I want. I did the calc "manually" in Excel (for one date in my time series), which gave me the expected result. So my question is if I did something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

渔村楼浪 2025-01-17 10:17:54

如果相同的行数和相同的索引简单相减,然后使用 sum

result = (df1['col1'] * df2['col3']).sum()

如果可能不同的索引但相同的长度:

result  = (df1['col1'] * df2['col3'].to_numpy()).sum()

或使用 numpy.dot

result = np.dot(df1['col1'],  df2['col3'])

如果可能的话,不同的长度和不同的索引:

result = (df1['col1'].reset_index(drop=True)
             .mul(df2['col3'].reset_index(drop=True), fill_value=1).sum()

If same number of rows and same indices simple subtract and then use sum:

result = (df1['col1'] * df2['col3']).sum()

If possible different indices but same length:

result  = (df1['col1'] * df2['col3'].to_numpy()).sum()

Or use numpy.dot:

result = np.dot(df1['col1'],  df2['col3'])

If possible different length and different indices:

result = (df1['col1'].reset_index(drop=True)
             .mul(df2['col3'].reset_index(drop=True), fill_value=1).sum()
遇见了你 2025-01-17 10:17:54

你可以这样做:

import pandas as pd 
import numpy as np 

df1 = pd.DataFrame({'col1':[0, 1, 2, 3, 4, 5]})
df2 = pd.DataFrame({'col1':[0, 1, 2, 3, 4, 5]})

result = np.matmul(df1.col1, df2.col1)

这也会对乘法求和。

如果添加 [],您的公式也有效:

result = sum([a * b for a, b in zip(list(df1['col1']), list(df2['col1']))])

这会产生相同的结果。

You can do it like this:

import pandas as pd 
import numpy as np 

df1 = pd.DataFrame({'col1':[0, 1, 2, 3, 4, 5]})
df2 = pd.DataFrame({'col1':[0, 1, 2, 3, 4, 5]})

result = np.matmul(df1.col1, df2.col1)

This will also sum the multiplications.

Your formulation works too, if you add []:

result = sum([a * b for a, b in zip(list(df1['col1']), list(df2['col1']))])

This gives the same result.

懒猫 2025-01-17 10:17:54

您只需使用 pandas 抽象即可。

result = df['col1'] * df['col3']

如果您想获得这些结果值的总和,您可以这样做:

sum(results)

You will can just use pandas abstractions for it.

result = df['col1'] * df['col3']

If then you want to get the sum of those result values you can just do:

sum(results)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文