在Python中使用两个数据帧进行简单查找

在Python中使用两个数据帧进行简单查找,python,pandas,dataframe,Python,Pandas,Dataframe,我正在与熊猫合作,我的目的是将数据从一个表带到另一个表。假设我有两个名为df1和df2的数据帧: df1是这样的: Name Age Height Marcus 18 170 Dan 21 172 Phill 30 165 Paty 24 160 Linda 25 158 Name Score1 Score2 Score3 Dan A C C Pa

我正在与熊猫合作,我的目的是将数据从一个表带到另一个表。假设我有两个名为df1和df2的数据帧:

df1是这样的:

Name    Age    Height
Marcus  18     170
Dan     21     172
Phill   30     165
Paty    24     160
Linda   25     158
Name    Score1    Score2     Score3
Dan          A         C          C
Paty         B         A          B
Marcus       C         D          B
Zoe          A         A          B
Name    Score1    Score2     Score3    Age
Dan          A         C          C    21
Paty         B         A          B    24
Marcus       C         D          B    18
Zoe          A         A          B    NaN
df2是这样的:

Name    Age    Height
Marcus  18     170
Dan     21     172
Phill   30     165
Paty    24     160
Linda   25     158
Name    Score1    Score2     Score3
Dan          A         C          C
Paty         B         A          B
Marcus       C         D          B
Zoe          A         A          B
Name    Score1    Score2     Score3    Age
Dan          A         C          C    21
Paty         B         A          B    24
Marcus       C         D          B    18
Zoe          A         A          B    NaN
我想找到一种方法来选择df1中的男性年龄,并将其带到df2,从而得到这样一个表:

Name    Age    Height
Marcus  18     170
Dan     21     172
Phill   30     165
Paty    24     160
Linda   25     158
Name    Score1    Score2     Score3
Dan          A         C          C
Paty         B         A          B
Marcus       C         D          B
Zoe          A         A          B
Name    Score1    Score2     Score3    Age
Dan          A         C          C    21
Paty         B         A          B    24
Marcus       C         D          B    18
Zoe          A         A          B    NaN

在Excel中,我们在df2到df1中使用VLOOKUP函数。但是我在Python中找不到类似的东西

您可以使用map或merge,map会更快

选项1:使用地图

df2['Age'] = df2['Name'].map(df1.set_index('Name')['Age'])
选项2:使用合并

df2.merge(df1[['Name', 'Age']], 'left')
不管怎样,你都会

    Name    Score1  Score2  Score3  Age
0   Dan     A       C       C       21.0
1   Paty    B       A       B       24.0
2   Marcus  C       D       B       18.0
3   Zoe     A       A       B       NaN

谢谢你的宝贵帮助,@Vaishali。它与“merge”配合得很好,但与“map”配合得不好。我尝试了很多次,但显示的消息都是一样的:“试图在数据帧的切片副本上设置一个值。请尝试改用.loc[row\u indexer,col\u indexer]=value”。也许“map”是一个更适合用于序列的函数,而不是用于数据帧。您可以使用merge,但map更有效,尤其是对于大型数据集。错误消息表示您的一个数据帧被创建为副本。您是如何创建df1和df2的?是的,@Vaishali。你说得对:df2是作为副本创建的。再次感谢你!