Python 3.x 如果另一个列条目在两个数据帧之间匹配,则从另一个数据帧的行条目填充一个列
我正在尝试向数据帧添加一个新列。首先,我想检查每一行的id是否存在于另一个数据帧中。如果是,那么我想用另一个数据框中的值填充我的行条目。例如,我要查找的数据帧如下所示: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 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')谢谢您的评论。不完全是。我要查找的第一个数据集实际上有许多列,我不想合并这些列。将所有这些列合并到我的第二个数据集中,然后删除它们似乎效率低下。然后只对列进行子集。还请注意,接受的答案使用内部合并(默认合并),如果没有匹配的键,则在右侧数据帧上删除条目。