我有两个熊猫数据框,每个都有相同的索引和列。我想创建第三个熊猫数据框,其中包含其他两个单元格的乘积。
这是我当前的解决方案,但是速度很慢。
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))
有什么更好的方法可以更快地做到这一点?谢谢!
答案 0 :(得分:2)
正如我在上面的评论中所提到的,您可以对DataFrame
进行DataFrame
乘以,因为pandas
是index
且columns
敏感的,因此只要计算出值,只有两个都匹配的隐藏键(index
和columns
)才会计算该值,否则将不计算(返回NaN
)
在您的情况下,您可能希望添加reindex_like
作为保护,这样您就不会有仅在df2中退出的不需要的列。
df1.mul(df2.abs().reindex_like(df1),fill_value=0)