检查数据框中的值是否存在于另一个数据框中,如果存在则附加这些值。

5

我有两个数据框,如下所示:

DF1
A   B   C
1   2   3
4   5   6
7   8   9

DF2
Match   Values
1       a,d
7       b,c

我想将 DF1['A'] 与 DF2['Match'] 进行匹配,如果存在该值,则将 DF2['Values'] 添加到 DF1 中。

So my result will be:
A    B    C    Values
1    2    3    a,d
7    8    9    b,c

现在我可以使用下面的代码来匹配值,但它返回一个空数据框。
df1 = df1[df1['A'].isin(df2['Match'])]

我需要帮助,非常感谢。


你能否编辑一下使你的数据框结构更加清晰明了? - Scott Boston
1
你尝试过使用 pd.merge() 吗? - Andrew L
1个回答

3

不必进行查找,您可以通过合并数据框来一次性完成:

pd.merge(df1, df2, how='inner', left_on='A', right_on='Match')

如果您只想要出现在两个数据框中的记录,请指定how='inner';如果您想要df1的所有数据,请指定how='left'

如果您只想保留Values列:

pd.merge(df1, df2.set_index('Match')['Values'].to_frame(), how='inner', left_on='A', right_index=True)


谢谢!这起作用了,但如果我的DF2有多列,而我只想保留其中一列,我该怎么做? - coding_monkey
@Mohnish - 你是想保留Match和Values两列吗? - Andrew L
不,假设DF@有列'Match'、'Values'、'Data',但我只想保留'Values'。 - coding_monkey
请查看上面的编辑。如果这回答了您的问题,请接受它作为答案!谢谢。 - Andrew L
对于大型数据框(每个数据框有2M行),它显示内存错误。 - user5722540
如果“Match”列中存在重复,该怎么办? - Coddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接