我有两个 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
是 index
和columns
敏感,每当它计算值时,有两个隐藏键(index
和columns
)只有当两者匹配时,它才会计算value ,如果不是,则不会计算(返回NaN
)
就您的情况而言,您可能希望添加 reindex_like
作为保护,这样您就不会有任何不需要的列仅在 df2 中退出。
df1.mul(df2.abs().reindex_like(df1),fill_value=0)
关于python - 从具有相同索引和列的两个 pandas 数据帧执行计算的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083870/