首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从具有相同索引和列的两个pandas数据帧执行计算的最快方法

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

Stack Overflow用户
提问于 2019-05-11 03:36:59
回答 1查看 116关注 0票数 1

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

这是我目前的解决方案,但它太慢了。

代码语言:javascript
运行
复制
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))

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 03:55:07

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

在您的情况下,您可能希望添加reindex_like作为保护,这样您就不会有任何不需要的列只存在于df2中。

代码语言:javascript
运行
复制
df1.mul(df2.abs().reindex_like(df1),fill_value=0)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56083870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档