Python 3.x 如果另一个列条目在两个数据帧之间匹配,则从另一个数据帧的行条目填充一个列

Python 3.x 如果另一个列条目在两个数据帧之间匹配,则从另一个数据帧的行条目填充一个列,python-3.x,pandas,Python 3.x,Pandas,我正在尝试向数据帧添加一个新列。首先,我想检查每一行的id是否存在于另一个数据帧中。如果是,那么我想用另一个数据框中的值填充我的行条目。例如,我要查找的数据帧如下所示: id replays 0 2 1 1 5 1 2 6 2 3 8 3 4 12 1 我想为其创建一个新列的dataframe最初看起来像这样,只有id: id 0 2 1 5 2 6 最终,此数据帧应填充如下新列,其中replay条目与第一个数据帧的id匹配

我正在尝试向数据帧添加一个新列。首先,我想检查每一行的id是否存在于另一个数据帧中。如果是,那么我想用另一个数据框中的值填充我的行条目。例如,我要查找的数据帧如下所示:

    id  replays
0   2   1
1   5   1
2   6   2
3   8   3
4   12  1
我想为其创建一个新列的dataframe最初看起来像这样,只有id:

    id
0   2
1   5
2   6
最终,此数据帧应填充如下新列,其中replay条目与第一个数据帧的id匹配:

    id  replays
0   2   1
1   5   1
2   6   2
我不知道如何做到这一点。我已尝试使用lambda apply,但无法获得所需的结果。

是否要合并:

import pandas as pd
df_vals = pd.DataFrame({'id':[2, 5, 6, 8, 12], 
                        'replays':[1, 1, 2, 3, 1]})

df = pd.DataFrame({'id':[2, 5, 6]})

cols = ["id", "replays"]

df.merge(df_vals[cols], on ="id")
产出:

   id  replays
0   2        1
1   5        1
2   6        2

如果不需要所有列,可以事先选择这些列。如果要连接的列有不同的名称,则必须使用
left\u on
right\u on

指定名称,这是否回答了您的问题?这是询问如何进行左合并<代码>左。合并(右,on='id',how='left')谢谢您的评论。不完全是。我要查找的第一个数据集实际上有许多列,我不想合并这些列。将所有这些列合并到我的第二个数据集中,然后删除它们似乎效率低下。然后只对列进行子集。还请注意,接受的答案使用内部合并(默认合并),如果没有匹配的键,则在右侧数据帧上删除条目。