Python 熊猫的索引匹配?

Python 熊猫的索引匹配?,python,python-3.x,pandas,jupyter-notebook,Python,Python 3.x,Pandas,Jupyter Notebook,我试图根据x值的行键和列键匹配x值。在excel中,我使用了INDEX&MATCH来获取正确的值,但在Pandas中,我很难做到这一点 示例: 我想将突出显示的值(保存在df2中)添加到我的df['Cost']列中 我有df['Weight']和df['Country']作为键,但我不知道如何使用它们来查找df2中突出显示的值 如何将黄色值提取到df3['Postage'],然后使用它将其添加到df['Cost']列中 我希望这是有道理的。让我知道我应该提供更多信息 编辑-更多信息(抱歉,我不

我试图根据x值的行键和列键匹配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

谢谢

只需获取突出显示的值
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)

只需获取突出显示的值
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)
用于您的案例(注意[0]需要索引到数组中)

希望这对.iloc和.loc有所帮助

d = {chr(ord('A')+r):[c+r*10 for c in range(5)] for r in range(5)}
df = pd.DataFrame(d).transpose()
df.columns=['a','b','c','d','e']
print(df)
print("--------")
print(df.loc['B']['c'])
print(df.iloc[1][2])
输出

    a   b   c   d   e
A   0   1   2   3   4
B  10  11  12  13  14
C  20  21  22  23  24
D  30  31  32  33  34
E  40  41  42  43  44
--------
12
12
用于您的案例(注意[0]需要索引到数组中)

希望这对.iloc和.loc有所帮助

d = {chr(ord('A')+r):[c+r*10 for c in range(5)] for r in range(5)}
df = pd.DataFrame(d).transpose()
df.columns=['a','b','c','d','e']
print(df)
print("--------")
print(df.loc['B']['c'])
print(df.iloc[1][2])
输出

    a   b   c   d   e
A   0   1   2   3   4
B  10  11  12  13  14
C  20  21  22  23  24
D  30  31  32  33  34
E  40  41  42  43  44
--------
12
12

请提供一些数据帧(df2、df3等)的示例,向我们展示python中的示例,dataframeRow和column索引被称为,类似于excel。谢谢,我添加了更多信息。让我知道这是否有帮助。请提供一些数据帧(df2、df3等)的示例,向我们展示python中的示例。dataframeRow和column索引被调用,类似于excel。谢谢,我添加了一些更多信息。请告诉我这是否有帮助。谢谢,不幸的是,我遇到了以下错误:TypeError:无法使用非整数键按位置索引索引(Tks到@Leonardus Chen)-修复了查找df.Countr==row.Country的行。然后按行索引到arr。权重值。。。然后返回[0]值。谢谢,不幸的是,我得到了以下错误:TypeError:无法使用非整数键按位置索引索引(Tks到@Leonardus Chen)-修复了查找df.Countr==row.Country的行的问题。然后按行索引到arr。权重值。。。然后返回[0]值,非常感谢!你最后的回答帮助了我!起初,我无法使用它,因为行权重(int)与列(str)相对。将重量转换为物体似乎有帮助!非常感谢你!你最后的回答帮助了我!起初,我无法使用它,因为行权重(int)与列(str)相对。将重量转换为物体似乎有帮助!