乘上一个列中的两个数据帧,碱和跳过的行不满足条件

问题描述 投票:-2回答:1

我有两个数据帧,第一个具有两个索引(国家及产品)和相关联的变量的值。我有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的值必须保持不变。

我真的很感谢你的帮助。我已经尝试了许多选项和任何工程。

pandas dataframe multi-index multiplying
1个回答
0
投票

首先,这不是一个好主意指数,将产生重复列。如果你是真的渴了就违反该最佳实践,您仍然可以按照下面我的指示,然后改回原来的指数。

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])
© www.soinside.com 2019 - 2024. All rights reserved.