Sak*_*eer 4 python excel dataframe pandas
我知道如果我们只一起检查两列,我可以像下面那样做。
df['flag'] = df['a_id'].isin(df['b_id'])
Run Code Online (Sandbox Code Playgroud)
其中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)
Run Code Online (Sandbox Code Playgroud)
以上代码总是以某种方式返回False值。输出应如下所示,
由于存在匹配项,因此第一行标志将为True。
a_key变成2a10 与最后一行匹配b_key (2a10)
You were going in the right direction, just use:
a_key = df['a_id'].astype(str) + df['a_region'] + df['a_ip'].astype(str)
b_key = df['b_id'].astype(str) + df['b_region'] + df['b_ip'].astype(str)
a_key.isin(b_key)
Run Code Online (Sandbox Code Playgroud)
Mine is giving below results:
0 True
1 False
2 False
Run Code Online (Sandbox Code Playgroud)