Check if value from one dataframe exists in another dataframe

后端 未结 4 1360
-上瘾入骨i
-上瘾入骨i 2020-12-02 23:52

I have 2 dataframes.

Df1 = pd.DataFrame({\'name\': [\'Marc\', \'Jake\', \'Sam\', \'Brad\']
Df2 = pd.DataFrame({\'IDs\': [\'Jake\', \'John\', \'Marc\', \'Tony         


        
相关标签:
4条回答
  • 2020-12-03 00:16

    This is one way. Convert to set for O(1) lookup and use astype(int) to represent Boolean values as integers.

    values = set(Df2['IDs'])
    
    Df1['Match'] = Df1['name'].isin(values).astype(int)
    
    0 讨论(0)
  • 2020-12-03 00:20

    By using merge

    s=Df1.merge(Df2,left_on='name',right_on='IDs',how='left')
    s.IDs=s.IDs.notnull().astype(int)
    s
    Out[68]: 
       name  IDs
    0  Marc    1
    1  Jake    1
    2   Sam    0
    3  Brad    0
    
    0 讨论(0)
  • 2020-12-03 00:28

    Use isin

    Df1.name.isin(Df2.IDs).astype(int)
    
    0    1
    1    1
    2    0
    3    0
    Name: name, dtype: int32
    

    Show result in data frame

    Df1.assign(InDf2=Df1.name.isin(Df2.IDs).astype(int))
    
       name  InDf2
    0  Marc      1
    1  Jake      1
    2   Sam      0
    3  Brad      0
    

    In a Series object

    pd.Series(Df1.name.isin(Df2.IDs).values.astype(int), Df1.name.values)
    
    Marc    1
    Jake    1
    Sam     0
    Brad    0
    dtype: int32
    
    0 讨论(0)
  • 2020-12-03 00:35

    This should do it:

    Df1 = Df1.assign(result=Df1['name'].isin(Df2['IDs']).astype(int))
    
    0 讨论(0)
提交回复
热议问题