2016-09-28 98 views
0

提取多個組:如何才能讓圖案從熊貓小區列表的所有出現次數?這可能嗎?如何使用電池df.str.extract的open()1

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

示例文本:

是快樂和痛苦A-12真相的消費者選擇在最近的時代已經逃脫。沒有誰發現的歡迎。 E-99中的明智之選快感真相的快感刺穿。但他們是非常開放的樂趣A-99 A-66鍛鍊。

1期望DF [ 「結果」]是[ 「A-12」, 「A-99」, 「A-66」]

回答

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 —它是固定在開發或rsion和0.19.0不會有這個問題。在此期間,你也可以做

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