我有两个数据帧,第一个具有两个索引(国家及产品)和相关联的变量的值。我有20个国家和7种产品。请注意,我可以有两排,同一个国家和产品在这个数据帧,因为每一行对应于不同的观察。
DF1
value
Country Product
Guatemala Hydro 259.420233
Oil 4.211656
Oil 341.550360
Coal, peat and oil shale 4.311316
Coal, peat and oil shale NaN
Hydro 24.433527
Colombia Oil 10
Coal, peat and oil shale 4.311316
.
.
.
第二数据帧是完全一样我显示下面
DF2
mult
Country Product
Argentina Natural gas 1
Colombia Oil 161
Mexico Coal, peat and oil shale 9
Natural gas 2
我想乘两个数据帧。最终的数据帧的行必须等于第一数据帧。当没有在DF2的任何可用值乘以在DF1(例如危地马拉/油)的行中,在DF1的值必须保持不变。
我真的很感谢你的帮助。我已经尝试了许多选项和任何工程。
首先,这不是一个好主意指数,将产生重复列。如果你是真的渴了就违反该最佳实践,您仍然可以按照下面我的指示,然后改回原来的指数。
import pandas as pd
import numpy as np
df1 = df1.reset_index(drop = False)
df2 = df2.reset_index(drop = False)
df3 = df1.merge(df2, on = [‘product’, ‘country’], how = ‘left’)
df3[ ‘result’] = np.where(df3.mult.isnull(), df3.value, df3.value * df3.mult)
#now, disrespect all that is holy
df3 = df3.set_index([‘product’, ‘country])