我有一个这样的数据框。
Name Age
0 Mr A 28
1 Mrs B 32
2 Mrs C 30
3 Mr D 34
4 Miss E 23
5 Mr F 37
我要过滤包含“ Mr”作为名称标题的行,并创建一个如下所示的新数据框。
Name Age
0 Mr A 28
1 Mr D 34
2 Mr F 37
我已经尝试过使用循环的以下方法。
import re
rows = []
for i, row in df.iterrows():
if re.search('Mr\s',row['Name']):
rows.append(row)
new_df = pd.DataFrame(rows)
虽然工作正常,但是有没有不使用循环的有效方法呢?
答案 0 :(得分:1)
将str.contains
与单词边界\b
一起使用:
df = pd.DataFrame({"Name":["Mr A","Mrs B","Mrs C","Mr D"]})
print (df[df["Name"].str.contains(r"\bMr\b")])
Name
0 Mr A
3 Mr D
答案 1 :(得分:1)
您可以尝试:
df.loc[df['Name'].str.contains(r'Mr ')]
Name Age
0 Mr A 28
3 Mr D 34
5 Mr F 37