假设我有以下两个数据框:
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中的对,然后在新列中返回,我的预期输出将是:
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
答案 0 :(得分:3)
我们有merge
和indicator
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
答案 1 :(得分:1)
这是我的贡献:
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