Python-数据框中每个字符串的str.match

时间:2019-01-03 21:31:59

标签: python pandas

我正在尝试使用str.match来精确匹配短语,但要针对每一行字符串中的每个单词。我想返回正确行的行索引号,这就是为什么我使用str.match而不是regex的原因。

我想返回完全包含“ FL”而不是“ FLORIDA”的行的索引。但是使用str.contains的问题在于,它向我返回了带有“ FLORIDA”的行的索引。

import pandas as pd
data = [['Alex in FL','ten'],['Bob in FLORIDA','five'],['Will in GA','three']]
df = pd.DataFrame(data,columns=['Name','Age'])

df.index[df['Name'].str.contains('FL')]
df.index[df['Name'].str.match('FL')]

数据框的外观如下:

    Name             Age
0   Alex in FL       ten
1   Bob in FLORIDA   five
2   Will in GA       three

输出应返回第0行的索引: Int64Index([0],dtype ='int64')

3 个答案:

答案 0 :(得分:3)

使用包含单词边界的包含内容

<div>
  <div class="slideshow-container">
      <button onclick = "onClick()" id="btn1" type="button" class="btn"> Zoom In</button>
        <button onclick = "zoomOut()" id= "btn2" type= "button" class="btn" >Cancel</button>
      <div class="img-magnifier-container mySlides">
        <img id = "img1" src="img1.jpg" width="800" height="600">
      </div>
      <div class="img-magnifier-container mySlides">
        <img id = "img2" src="img2.jpg" width="800" height="600" >
      </div>
      <div class="img-magnifier-container mySlides">
        <img id = "img4" src="img4.jpg" width="800" height="600">
      </div>
  </div>

输出

import pandas as pd

data = [['Alex in FL','ten'],['Bob in FLORIDA','five'],['Will in GA','three']]
df = pd.DataFrame(data,columns=['Name','Age'])

print(df.index[df['Name'].str.contains(r'\bFL\b')])

答案 1 :(得分:1)

尝试:

df[df.Name.str.contains(r'\bFL\b', regex=True)]

OR

df[['FL' in i for i in df.Name.str.split('\s')]]

输出:

         Name  Age
0  Alex in FL  ten

答案 2 :(得分:0)

docs说它正在将正则表达式与表达式(在您的情况下为“ FL”)匹配。由于“ FLORIDA”确实包含该子字符串,因此它确实匹配。

您可以这样做的一种方法是匹配“ FL”(用空格填充),但是您还需要用空格填充每个值(当“ FL”是字符串的结尾时) )。