comparing two Dataframe columns to check if they have same value in python

别等时光非礼了梦想. 提交于 2019-12-12 06:51:14

问题


I have two dataframes,

new1.
      Name       city
 0    sri won    chn
 1    pechi won  pune
 2    Ram won    mum
 0    pec won    kerala

new3
    req
0   pec
1   mut

I tried,

mask=new1.Name.str.contains("|".join(new3.req.values.tolist()))
new1[mask]

I am getting,

 new1[mask]
      Name       city
 1  pechi won    pune
 0  pec won      kerala

As "pechi" contains "pec", it took this valu. but I want the exact match between the values not "contains"

my desired output is,

 new1[mask]
      Name       city
 0  pec won      kerala

回答1:


You need \b that means "word boundary":

a = r'\b(' + "|".join(new3.req.values.tolist()) + r')\b'
print (a)
\b(pec|mut)\b

mask=new1.Name.str.contains(a)
df = new1[mask]
print (df)
      Name    city
0  pec won  kerala



回答2:


You need space in separator

In [1350]: new1
Out[1350]:
        Name    city
0    sri won     chn
1  pechi won    pune
2    Ram won     mum
0    pec won  kerala

In [1351]: new3
Out[1351]:
   req
0  pec
1  mut

In [1352]: ' | '.join(new3.req)
Out[1352]: 'pec | mut'

In [1353]: new1.Name.str.contains(' | '.join(new3.req))
Out[1353]:
0    False
1    False
2    False
0     True
Name: Name, dtype: bool

In [1354]: new1[new1.Name.str.contains(' | '.join(new3.req))]
Out[1354]:
      Name    city
0  pec won  kerala


来源:https://stackoverflow.com/questions/45583113/comparing-two-dataframe-columns-to-check-if-they-have-same-value-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!