python - 从具有相同索引和列的两个 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
,因为pandas
isindex
和columns
sensitive ,每当它计算值时,只有两个隐藏键(index
和columns
)只有当两者都匹配时,它才会计算值,如果不是,它不会计算(返回NaN
)
在您的情况下,您可能希望添加reindex_like
保护,这样您就不会有任何不需要的列仅在 df2 中退出。
df1.mul(df2.abs().reindex_like(df1),fill_value=0)
推荐阅读
- android - 在另一台计算机上编译时出现 Google SignIn API 异常 10
- react-native - 尝试为选项卡按钮添加显示/隐藏逻辑
- c++ - 在 qml 中处理页面
- node.js - docker容器中的nodejs twitter api抛出401错误
- amazon-web-services - AWS ECS 通过 bash 从容器内将文件上传到存储桶
- mysql - 如何在节点 js 中添加自动触发器?
- php - Laravel 加载关系 - 框架错误?
- ocaml - 函数定义语法
- python - Python Pandas:传递值的形状是 (126, 5),索引意味着 (84, 5)
- scala - 如何编写一个通用函数来评估火花数据框的列内的列值