python - 从具有相同索引和列的两个 pandas 数据帧执行计算的最快方法

标签 python python-3.x pandas

我有两个 pandas 数据框,每个数据框都有相同的索引和列。我想创建第三个 pandas 数据框,其中包含其他两个数据框的每个单元格的乘积。

这是我当前的解决方案,但速度非常慢。

import pandas as pd

new_df = pd.DataFrame(columns=df1.columns, index=df1.index, data=[])

for col, values in new_df.iteritems():
    for idx, value in values.iteritems():
        foo = df1.loc[idx][col]
        bar = df2.loc[idx][col]

        new_df.set_value(idx, col, foo * abs(bar))

有什么更好的方法可以更快地做到这一点吗?谢谢!

最佳答案

正如我在上面的评论中提到的,您可以使用 DataFrame mul 与 DataFrame ,因为 pandasindexcolumns敏感,每当它计算值时,有两个隐藏键(indexcolumns)只有当两者匹配时,它才会计算value ,如果不是,则不会计算(返回NaN)

就您的情况而言,您可能希望添加 reindex_like 作为保护,这样您就不会有任何不需要的列仅在 df2 中退出。

df1.mul(df2.abs().reindex_like(df1),fill_value=0)

关于python - 从具有相同索引和列的两个 pandas 数据帧执行计算的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083870/

相关文章:

python - 3d 网格的掩蔽和直方图

Python/Django 时间戳,包括毫秒

python - 从整个模块中可用的子模块创建全局变量

python - 如何避免继承成员使用自动摘要和自定义模板?

python - Pandas 滚动时间总和

python - 如何在 pandas 的 groupby 之后乘以一列的行?

python - 只能将 '.sparse' 访问器与稀疏数据一起使用

python - 相应的字典键和值输出

python - *a, b, c = line.split() 中的 Asterisk 有什么作用?

python - 在抽象模型中创建 models.UniqueConstraint