我试图在我的数据帧(标题)的某一列中找到部分字符串匹配。理想情况下,如果部分字符串匹配为true,我希望pandas创建一个真正的false列,如果字符串匹配为false,我希望创建一个false。我想给你一个def函数,以便创建一个if / else语句,因为我的数据集非常大。
如果列标题为'有“狗”这个词。在其中,然后在我的新专栏“Match'”中添加一行。
Old Dataframe example:
Title Author Name
Dogs R Us John Smith
Pigs can Fly Henry White
Dog Games Adam James
New Dataframe example:
Title Author Name Match
Dogs R Us John Smith True
Pigs can Fly Henry White False
Dog Games Adam James True
答案 0 :(得分:3)
使用str.contains
In [832]: df.Title.str.contains('Dog')
Out[832]:
0 True
1 False
2 True
Name: Title, dtype: bool
In [833]: df['Match'] = df.Title.str.contains('Dog')
In [834]: df
Out[834]:
Title Author Name Match
0 Dogs R Us John Smith True
1 Pigs can Fly Henry White False
2 Dog Games Adam James True
答案 1 :(得分:3)
只需使用pandas.Series.str.contains
.
>>> df
title
0 dogs r us
1 pigs can fly
2 dog games
>>> df['Match'] = df.title.str.contains('dog')
>>> df
title Match
0 dogs r us True
1 pigs can fly False
2 dog games True
如果您希望检查不区分大小写,则可以使用re.IGNORECASE
标志。
>>> df['Match'] = df.title.str.contains('dog', flags=re.IGNORECASE)
由于这是使用re.search
,您可以使用常规正则表达方式检查多个字符串,例如
>>> df['Match'] = df.title.str.contains('dog|cats', flags=re.IGNORECASE)