我有两个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))有没有更好的方法可以更快地做到这一点?谢谢!
发布于 2019-05-11 03:55:07
正如我在上面的评论中提到的,你可以用DataFrame做DataFrame mul,因为pandas对index和columns敏感,每当它计算值时,只有当两者匹配时,才会有两个隐藏的键(index和columns ),如果不匹配,它就不会计算(返回NaN)。
在您的情况下,您可能希望添加reindex_like作为保护,这样您就不会有任何不需要的列只存在于df2中。
df1.mul(df2.abs().reindex_like(df1),fill_value=0)https://stackoverflow.com/questions/56083870
复制相似问题