首页 > 解决方案 > 如果另一个列条目在两个数据帧之间匹配,则从另一个数据帧的行条目填充熊猫列

问题描述

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

    id  replays
0   2   1
1   5   1
2   6   2
3   8   3
4   12  1

我要为其创建新列的数据框最初看起来像这样,只有 id:

    id
0   2
1   5
2   6

最终,这个数据帧应该填充一个像这样的新列,其中重播条目是与第一个数据帧中的 id 匹配的那些:

    id  replays
0   2   1
1   5   1
2   6   2

我不确定如何实现这一目标。我曾尝试使用 lambda apply,但无法获得所需的结果。

标签: python-3.xpandas

解决方案


你想要一个合并:

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_onand来指定right_on


推荐阅读