【发布时间】:2019-06-20 12:37:22
【问题描述】:
我有两个数据框 df1(35k 记录)和 df2(100k 记录)。在 df1['col1'] 和 df2['col3'] 我有唯一的 id。我想将 df1['col1'] 与 df2['col3'] 匹配。如果它们匹配,我想用另外一列更新 df1 ,例如 df1['Match'] 值为 true ,如果不匹配,则更新为 False 值。我只想将这个 TRUE 和 False 值映射到匹配和不匹配的记录。
我正在使用.isin()function,我得到了正确的匹配但不匹配计数但无法正确映射它们。
Match = df1['col1'].isin(df2['col3'])
df1['match'] = Match
我也使用了merge函数,通过传递参数how=right但没有得到结果。
【问题讨论】:
-
映射不正确是什么意思?使用您的语法,
df1['match'] = df1['col1'].isin(df2['col3'])似乎适用于您描述的目标。在df2['col3']中找到col1值的df1的行将为True,否则为False。 -
@kentwait 在完成
df1['match'] = Match之后,如果我有 10 条记录匹配。然后在 df1 中,它只是以串行方式更新,而不是它匹配的确切记录。 -
df1['col1'].isin(df2['col3'])返回的行数等于df1的行数,无论找到多少匹配的“True”记录。您可以尝试@crazyGamer 回答,但您的代码应该可以正常工作。也许还有其他问题。