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