在Python中使用两个数据帧进行简单查找
我正在与熊猫合作,我的目的是将数据从一个表带到另一个表。假设我有两个名为df1和df2的数据帧: df1是这样的:在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
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是作为副本创建的。再次感谢你!