Python Pandas Regex:在列中搜索带有通配符的字符串并返回匹配项

北极星08

我在可能包含键的列中有一个搜索列表:'keyword1*keyword2'尝试在单独的数据框列中查找匹配项。如何包含正则表达式通配符类型'keyword1.*keyword2' #using str.extract, extractall or findall?

使用.str.extract可以很好地匹配精确子字符串,但我还需要它来匹配关键字之间带有通配符的子字符串。

# dataframe column or series list as keys to search for: 
dfKeys = pd.DataFrame()
dfKeys['SearchFor'] = ['this', 'Something', 'Second', 'Keyword1.*Keyword2', 'Stuff', 'One' ]

# col_next_to_SearchFor_col
dfKeys['AdjacentCol'] = ['this other string', 'SomeString Else', 'Second String Player', 'Keyword1 Keyword2', 'More String Stuff', 'One More String Example' ]

# dataframe column to search in: 
df1['Description'] = ['Something Here','Second Item 7', 'Something There', 'strng KEYWORD1 moreJARGON 06/0 010 KEYWORD2 andMORE b4END', 'Second Item 7', 'Even More Stuff']]

# I've tried:
df1['Matched'] = df1['Description'].str.extract('(%s)' % '|'.join(key['searchFor']), flags=re.IGNORECASE, expand=False)

我也尝试用 'extractall' 和 'findall' 替换上面代码中的 'extract',但它仍然没有给我我需要的结果。我希望'Keyword1*Keyword2'匹配"strng KEYWORD1 moreJARGON 06/0 010 KEYWORD2 andMORE b4END"

更新:'.*' 有效!我还尝试将单元格中的值添加到 'SearchFor' 列中匹配的键旁边,即dfKeys['AdjacentCol'].

我试过:df1['From_AdjacentCol'] = df1['Description'].str.extract('(%s)' % '|'.join(key['searchFor']), flags=re.IGNORECASE, expand=False).map(dfKeys.set_index('SearchFor')['AdjacentCol'].to_dict()).fillna('')它适用于除带通配符的键之外的所有内容。

# expected:
  Description                                      Matched            From_AdjacentCol
0 'Something Here'                                 'Something'         'this other string'
1 'Second Item 7'                                  'Second'            'Second String Player'
2 'Something There'                                'Something'         'this other string'  
3 'strng KEYWORD1 moreJARGON 06/0 010 KEYWORD2...' 'Keyword1*Keyword2' 'Keyword1 Keyword2'
4 'Second Item 7'                                  'Second'            'Second String Player'
5 'Even More Stuff'                                'Stuff'             'More String Stuff'

非常感谢您对此的任何帮助。谢谢!

杰兰德西

解决方案

您已接近解决方案,只需更改*.*. 阅读文档

. (点。)在默认模式下,这匹配除换行符之外的任何字符。如果指定了 DOTALL 标志,则它匹配包括换行符在内的任何字符。

* 使生成的 RE 匹配前面 RE 的 0 次或多次重复,尽可能多的重复。ab* 将匹配 'a'、'ab' 或 'a' 后跟任意数量的 'b'。

在正则表达式中,星号*本身没有任何意义。*与 Unix/Windows 文件系统中通常的 glob 运算符具有不同的含义

星号是一个量词(即灰色量词),它必须与某种模式(这里.匹配任何字符)相关联才能表示某些东西。

MCVE

重塑您的 MCVE:

import re
import pandas as pd

keys = ['this', 'Something', 'Second', 'Keyword1.*Keyword2', 'Stuff', 'One' ]

df1 = pd.DataFrame()
df1['Description'] = ['Something Here','Second Item 7', 'Something There',
                      'strng KEYWORD1 moreJARGON 06/0 010 KEYWORD2 andMORE b4END',
                      'Second Item 7', 'Even More Stuff']


regstr = '(%s)' % '|'.join(keys)

df1['Matched'] = df1['Description'].str.extract(regstr, flags=re.IGNORECASE, expand=False)

正则表达式现在是:

(this|Something|Second|Keyword1.*Keyword2|Stuff|One)

并匹配缺失的情况:

                                         Description                                Matched
0                                     Something Here                              Something
1                                      Second Item 7                                 Second
2                                    Something There                              Something
3  strng KEYWORD1 moreJARGON 06/0 010 KEYWORD2 an...  KEYWORD1 moreJARGON 06/0 010 KEYWORD2
4                                      Second Item 7                                 Second
5                                    Even More Stuff                                  Stuff

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Pandas 搜索带有元字符的字符串

来自分类Dev

从列表中搜索数据框列中的部分字符串匹配-Pandas-Python

来自分类Dev

从列表中搜索数据框列中的部分字符串匹配-Pandas-Python

来自分类Dev

从python pandas的dataframe列中搜索匹配的字符串模式

来自分类Dev

Python Pandas:如何在列中搜索字符串?

来自分类Dev

尝试将Python Pandas中带有字符串的列转换为Float时出错

来自分类Dev

Python / Pandas-使用多列合并时将“空字符串”视为匹配项

来自分类Dev

Python - 在字符串中搜索匹配项

来自分类Dev

如何使用python Regex查找给定字符串中的所有完全匹配项

来自分类Dev

获取带有预定义列表的pandas列字符串中匹配单词的计数

来自分类Dev

Python Pandas CSV删除特定列中的所有字符串

来自分类Dev

python Pandas过滤列名称中具有特定子字符串的列

来自分类Dev

python pandas根据前缀匹配字符串

来自分类Dev

在python中搜索包含通配符的字符串

来自分类Dev

在python中搜索包含通配符的字符串

来自分类Dev

Python regex findall函数仅在组上返回匹配项,而不是完整字符串

来自分类Dev

带有夏令时的python pandas TimeStamps到本地时间字符串

来自分类Dev

python pandas在列中获得不同的匹配项

来自分类Dev

Python pandas str.extract regex 字符串结尾

来自分类Dev

如何在Excel文件中搜索一组输入字符串并使用Python返回所有匹配的行?

来自分类Dev

在pandas的列中搜索列表,如果找到则返回字符串值,否则返回null

来自分类Dev

Python Pandas处理字符串中的特殊字符

来自分类Dev

Python Pandas列过滤子字符串

来自分类Dev

将包含空字符串的列合并为python pandas中的一列

来自分类Dev

python中的高效搜索算法在excel工作簿的所有工作表中搜索字符串并返回匹配的工作表编号

来自分类Dev

datetime到python pandas中的系列字符串

来自分类Dev

如何使用groupby连接python pandas中的字符串?

来自分类Dev

如何使用groupby连接python pandas中的字符串?

来自分类Dev

列,Pandas,Python中所有值的条件字符串操作

Related 相关文章

  1. 1

    Python Pandas 搜索带有元字符的字符串

  2. 2

    从列表中搜索数据框列中的部分字符串匹配-Pandas-Python

  3. 3

    从列表中搜索数据框列中的部分字符串匹配-Pandas-Python

  4. 4

    从python pandas的dataframe列中搜索匹配的字符串模式

  5. 5

    Python Pandas:如何在列中搜索字符串?

  6. 6

    尝试将Python Pandas中带有字符串的列转换为Float时出错

  7. 7

    Python / Pandas-使用多列合并时将“空字符串”视为匹配项

  8. 8

    Python - 在字符串中搜索匹配项

  9. 9

    如何使用python Regex查找给定字符串中的所有完全匹配项

  10. 10

    获取带有预定义列表的pandas列字符串中匹配单词的计数

  11. 11

    Python Pandas CSV删除特定列中的所有字符串

  12. 12

    python Pandas过滤列名称中具有特定子字符串的列

  13. 13

    python pandas根据前缀匹配字符串

  14. 14

    在python中搜索包含通配符的字符串

  15. 15

    在python中搜索包含通配符的字符串

  16. 16

    Python regex findall函数仅在组上返回匹配项,而不是完整字符串

  17. 17

    带有夏令时的python pandas TimeStamps到本地时间字符串

  18. 18

    python pandas在列中获得不同的匹配项

  19. 19

    Python pandas str.extract regex 字符串结尾

  20. 20

    如何在Excel文件中搜索一组输入字符串并使用Python返回所有匹配的行?

  21. 21

    在pandas的列中搜索列表,如果找到则返回字符串值,否则返回null

  22. 22

    Python Pandas处理字符串中的特殊字符

  23. 23

    Python Pandas列过滤子字符串

  24. 24

    将包含空字符串的列合并为python pandas中的一列

  25. 25

    python中的高效搜索算法在excel工作簿的所有工作表中搜索字符串并返回匹配的工作表编号

  26. 26

    datetime到python pandas中的系列字符串

  27. 27

    如何使用groupby连接python pandas中的字符串?

  28. 28

    如何使用groupby连接python pandas中的字符串?

  29. 29

    列,Pandas,Python中所有值的条件字符串操作

热门标签

归档