首页 > 解决方案 > Pandas 中的索引匹配?

问题描述

我正在尝试根据它们的行键和列键匹配 x 值。在 excel 中,我使用 INDEX & MATCH 来获取正确的值,但我在 Pandas 中也很难做到这一点。

例子:

我想将突出显示的值(保存在 df2 中)添加到我的 df['Cost'] 列。

我有 df['Weight'] & df['Country'] 作为键,但我不知道如何使用它们在 df2 中查找突出显示的值。

如何将黄色值提取到 df3['Postage'] 中,然后我可以将其添加到我的 df['Cost'] 列中?

简化矩阵

我希望这是有道理的。让我知道我应该提供更多信息。

编辑 - 更多信息(抱歉,我不知道如何从 Jupyter 复制输出): 在此处输入图像描述

当我运行 [93] 时,出现以下错误:

ValueError: Row labels must have same size as column labels

谢谢!

标签: pythonpython-3.xpandasjupyter-notebook

解决方案


1.75简单地获得突出显示的值

df2.loc[df2['Country']=='B', 3]

因此,概括上述内容并使用来自的国家权重密钥对df1

cost = []

for i in range(df1.shape[0]):
    country = df1.loc[i, 'Country']
    weight = df1.loc[i, 'Weight']
    cost.append(df2.loc[df2['Country']==country, weight]

df1['Cost'] = cost

或者更好:

df1['Cost'] = df1.apply(lambda x: df2.loc[df2['Country']==x['Country'], x['Weight'], axis=1)

推荐阅读