python Pandas提取物()和Pandas提取物()有什么区别?

3vpjnl9f  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(100)

我试图从一列字符串和一个给定单词列表中找到所有匹配的单词。如果我使用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'
hmae6n7t

hmae6n7t1#

extract返回第一个匹配项。extractall为每个匹配项生成一行。
例如,让我们匹配A和下面的字母。

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

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

这就创建了一个新的索引级别"match"来标识匹配号,来自同一行的匹配项由相同的第一个索引级别标识。
输出:

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

相关问题