使用pandas中的regex在另一列中的一列中查找值

时间:2015-09-01 19:29:49

标签: python pandas

我有一个包含两列字符串的pandas数据框。我想识别第一列(s1)中的字符串出现在第二列(s2)的字符串中的所有行。

所以,如果我的专栏是:

abc    abcd*ef_gh
z1y    xxyyzz

我想保留第一行,但不是第二行。

我能想到的唯一方法是:

  1. 遍历数据帧行
  2. 使用df.str.contains()的内容作为匹配模式将s2应用于s1
  3. 有没有办法实现这个并不需要迭代行?

2 个答案:

答案 0 :(得分:2)

它可能是可行的(仅用于简单匹配),以矢量化的方式,使用numpy chararray methods

In [326]:

print df
    s1          s2
0  abc  abcd*ef_gh
1  z1y      xxyyzz
2  aaa   aaabbbsss
In [327]:

print df.ix[np.char.find(df.s2.values.astype(str), 
                         df.s1.values.astype(str))>=0, 
            's1']
0    abc
2    aaa
Name: s1, dtype: object

答案 1 :(得分:1)

我能想到的最好的方法是使用if ($(this).hasClass("class") == true){ this will happen } 代替手动迭代:

apply