如何使用pandas df.str.extract()从单元格中提取多个组

时间:2016-09-28 13:50:29

标签: pandas

如何从Pandas单元格中获取模式的所有出现?有可能吗?

name_pattern = r'([A]u?[-_\s]?[0-9]{2})'
df["Result"] = df["Name"].str.extract(name_pattern, flags=re.IGNORECASE)

示例文字:

Qui使用doloremque A-12 veritatis dolor optio temporibus nobis fugit。 Inventore excepturi quis nulla。 Dolor ratione Z-99 optio doloribus voluptas veritatis voluptatem。 Asperiores sd aperiam sint A-99 voluptatem A-66 exercitationem。

我希望df ["结果"]为[" A-12"," A-99"," A-66&# 34]

1 个答案:

答案 0 :(得分:1)

你应该可以使用

df["Result"] = (df["Name"].str.extractall(name_pattern, flags=re.IGNORECASE)
                          .groupby(level=0)[0].apply(list))

会导致以下df

                                                Name              Result
0  Qui voluptates doloremque A-12 veritatis dolor...  [A-12, A-99, A-66]

不幸的是,有bug阻止它在0.18.0和0.18.1中工作 - 它在开发版本中得到修复,0.19.0不会出现此问题。在此期间,您也可以

df["Result"] = df["Name"].apply(lambda x: re.findall(name_pattern, x, flags=re.IGNORECASE))