我有以下 Dataframe (df
),其中"text"列包含字符串:
| 正文|某事|
| - ------|- ------|
| 文本1显示|...|
| 键盘输入文字2|...|
| 图文电视|...|
| 尤乌特夫布韦韦雷|...|
我还有一个Series(df_look_for
),其中包含我要查找的字符串:
| 寻找|
| - ------|
| 文本1|
| 文本2|
| 文本3|
我的目标是检查"text"列是否包含"look_for"列中的某个字符串。如果包含,我希望将找到的字符串作为新列添加到df
中。例如:
| 正文|某事|发现字符串|
| - ------|- ------|- ------|
| 文本1显示|...|文本1|
| 键盘输入文字2|...|文本2|
| 图文电视|...|文本3|
| 尤乌特夫布韦韦雷|...|NaN
|
到目前为止,我尝试使用str.contains()
,但还没有成功。
任何帮助都将不胜感激!
4条答案
按热度按时间syqv5f0l1#
下面是将
map()
与next()
一起使用的替代方法您也可以将
re
与str.extract()
一起使用:x一个一个一个一个x一个一个二个x
kxe2p93d2#
一种选择是使用带有
next
的 * listcomp * 来避免嵌套列表。输出:
7qhs6swi3#
另一个方法。这将给予所有找到的字符串的列表:
olmpazwi4#
解决方案:
说明:
可以使用
str.extract
方法沿着正则表达式来实现这一点,其思想是提取与df_look_for
中的模式匹配的第一个字符串,并将其作为新列添加到 Dataframe 中。通过将所有元素与
|
连接,df_look_for
系列被转换为正则表达式模式(逻辑或运算符)。然后使用str.extract
方法从text列中提取此模式的第一个匹配项,并将结果存储在found_str
列中。使用fillna
方法来用串'NaN'
替换任何缺失值(即,未发现匹配的值)。