2017-10-19 106 views
3

我有這樣的:提取,並在大熊貓數據框中使用正則表達式替換子

           Title 
Num              
0 <span class="o-label--tiny">VALEUR ÉNERGÉTIQUE</span> 
1   <span class="o-label--tiny">PROTÉINES</span> 
2   <span class="o-label--tiny">GLUCIDES</span> 

<class 'pandas.core.frame.DataFrame'> Num Index(['Title'], dtype='object') 

這就是我想要的:

  Title 
Num              
0 VALEUR ÉNERGÉTIQUE 
1   PROTÉINES 
2   GLUCIDES 

這是我公司開發的正則表達式:

(<span class=\"o-label--tiny\">)([a-zA-Z]+\s*\w*)(</span>) 

測試它我看到它匹配整個初始字符串,併爲不同的子字符串組。最後,我希望組(2)在我的數據框列中。 (我下面的例子顯示了明確的正則表達式,但我也嘗試了re.compile結果,它不能使我得到最終結果)。

這是我曾嘗試:

df['Title'] = df['Title'].replace({'<span class=\"o-label--tiny\">': ''}, inplace=True, regex=True) 

結果:

Title             
Num               
0 None 
1 None 
2 None 

嘗試號碼2:

df['Title'] = df['Title'].str.replace('<span class=\"o-label--tiny\">', repl = '') 

結果數2:

Title 
Num               
0  NaN 
1  NaN 
2  NaN 

嘗試號碼3:

df['Title'] = df[lambda df: df.columns[0]].str.extract('(>[a-zA-Z]+\s*\w*)', expand=False) 

結果3:

Title 
Num               
0  NaN 
1  NaN 
2  NaN 

我真的不明白我做錯了任何讓我期望的結果幫助將不勝感激。謝謝!

回答

1

使用str.extract

df['Title']=df['Title'].str.extract('<span class=\"o-label--tiny\">(.*)</span>',expand=False) 
print (df) 
        Title 
Num      
0 VALEUR ÉNERGÉTIQUE 
1    PROTÉINES 
2    GLUCIDES 

如果可能的不同tag S或class ES:

df['Title'] = df['Title'].str.extract('>(.*)<',expand=False) 
print (df) 
        Title 
Num      
0 VALEUR ÉNERGÉTIQUE 
1    PROTÉINES 
2    GLUCIDES 
+1

您已經發布的答案? – Dark

+0

我剛剛將此添加爲評論。你編輯它。我刪除我的回答 – Dark

+0

@jezrael:我試過你的代碼,但都沒有爲我工作。我仍然拿到NaN而不是正確的字符串。 ?? – ChiChi

0

正則表達式

我不想在DF東西進入,但我希望這很有用:

import re 

stringa = """ 
0 <span class="o-label--tiny">VALEUR ÉNERGÉTIQUE</span> 
1   <span class="o-label--tiny">PROTÉINES</span> 
2   <span class="o-label--tiny">GLUCIDES</span> 
""" 

pattern1 = "[0-9]" 
pattern = ">(.*)<" 

found = re.findall(pattern1, stringa) 
found2 = re.findall(pattern, stringa) 

for f in range(len(found)): 
    print(found[f] + " " + found2[f]) 

輸出

0 VALEUR ÉNERGÉTIQUE 
1 PROTÉINES 
2 GLUCIDES 
相關問題