【发布时间】:2019-09-17 03:56:21
【问题描述】:
如果我们只检查两列,我知道我可以像 below 那样做。
df['flag'] = df['a_id'].isin(df['b_id'])
其中df 是一个数据框,a_id 和b_id 是数据框的两列。它将根据匹配返回 True 或 False 值。但我需要将多个列一起比较。
例如:如果有a_id , a_region, a_ip, b_id, b_region and b_ip 列。我想像下面这样比较,
a_key = df['a_id'] + df['a_region] + df['a_ip']
b_key = df['b_id'] + df['b_region] + df['b_ip']
df['flag'] = a_key.isin(b_key)
不知何故,上面的代码总是返回False 值。输出应该如下所示,
第一行标志将为 True,因为存在匹配项。
a_key 变为 2a10 这与 b_key 的最后一行匹配 (2a10)
【问题讨论】:
-
您能否添加一个小样本数据框和预期数据框(我们会更好地理解需求)来复制问题,谢谢
-
@anky_91 : 我已经根据你的 cmets 编辑了代码..
-
iirc,应该是
a_key.isin(b_key.values)。请尝试一下。
标签: python excel pandas dataframe