繁体   English   中英

Pandas isin 基于两列

[英]Pandas isin based on two columns

假设我有以下两个数据框:

df = pd.DataFrame({'col1':['a','b', 'c'], 'col2': ['q', 'w', 'e']})

df1 = pd.DataFrame({'col1': ['c', 'b', 'b', 'r','a', 'l', 'c'], 'col2': ['e', 'w', 'q', 'u', 'q', 'w', 'q']})
print(df)
col1    col2
a   q
b   w
c   e

print(df1)
col1 col2
   c    e
   b    w
   b    q
   r    u
   a    q
   l    w
   c    q

我想在 df1 中找到所有在 df 中的对并在新列中返回,我预期的 output 将是:

col1 col2   col3
   c    e   True
   b    w   True
   b    q  False
   r    u  False
   a    q   True
   l    w  False
   c    q  False

我知道这可以通过创建一个键来连接列来完成,但我现在想如果有一种简洁的方法可以做到这一点,比如:

df1.isin(df) #doesn't work

我们与indicator merge

s=df1.merge(df,indicator=True,how='left')
s['col3']=s['_merge']=='both'
s
  col1 col2     _merge
0    c    e       both
1    b    w       both
2    b    q  left_only
3    r    u  left_only
4    a    q       both
5    l    w  left_only
6    c    q  left_only

这是我的贡献:

df1['col3'] = None
for key, tup in enumerate(list(zip(df1.col1,df1.col2))):
    if tup in list(zip(df.col1,df.col2)):
        df1['col3'].iloc[key] = True
    else:
        df1['col3'].iloc[key] = False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM