pandas str.extractall() 和 pandas str.extract() 有什么区别?

what difference between pandas str.extractall() and pandas str.extract()?

我试图从一列字符串和给定的单词列表中找到所有匹配的单词。如果我使用 pandas str.extract(),我可以获得第一个匹配的词,因为我需要所有匹配的词,所以我认为 pandas str.extractall() 会起作用,但是,我只得到一个 ValueError。这里会出现什么问题?非常感谢!

 df['findWord'] = df['text'].str.extractall(f"({'|'.join(wordlist)})").fillna('')

ValueError: Buffer dtype mismatch, expected 'Python object' but got 'long long'

extract returns the first match. extractall 每个匹配生成一行。

例如,让我们匹配 A 和后面的字母。

df = pd.DataFrame({'col': ['ABC', 'ADAE']})
#     col
# 0   ABC
# 1  ADAE

df['col'].str.extractall('(A.)')

这创建了一个名为“匹配”的新索引级别,用于标识匹配编号。来自同一行的匹配项由相同的第一个索引级别标识。

输出:

          0
  match    
0 0      AB
1 0      AD
  1      AE

extract:

df['col'].str.extract('(A.)')

输出:

    0
0  AB
1  AD
聚合extractall
的输出
(df['col']
 .str.extractall('(A.)')
 .groupby(level='match').agg(','.join)
)

输出:

           0
match       
0      AB,AD
1         AE