2016-05-08 82 views
2

括號我有內容的Python的(2.7)熊貓DF具有列這看起來是這樣的:如何提取從正則表達式的輸出,在蟒蛇

 email 
['[email protected]'] 
['[email protected]'] 
['[email protected]'] 
['[email protected]'] 

我想從中提取電子郵件,而不方括號和單引號。輸出應該是這樣的:

 email 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

我試過這個答案的建議:Replace all occurrences of a string in a pandas dataframe (Python)。但它不工作。任何幫助將不勝感激。

編輯: 如果我有超過1維的數組該怎麼辦?類似於:

  email 
    ['[email protected]'] 
    ['[email protected]'] 
    ['[email protected]'] 
    ['[email protected]','[email protected]'] 
    ['[email protected]','[email protected]', '[email protected]'] 

是否可以在不帶方括號和單引號的三個不同列中得到輸出。

回答

4

可以使用str.strip如果值typestring

print type(df.at[0,'email']) 
<type 'str'> 

df['email'] = df.email.str.strip("[]'") 
print df 
       email 
0 [email protected] 
1 [email protected] 
2 [email protected] 
3 [email protected] 

如果typelistapplySeries

print type(df.at[0,'email']) 
<type 'list'> 

df['email'] = df.email.apply(pd.Series) 
print df 
       email 
0 [email protected] 
1 [email protected] 
2 [email protected] 
3 [email protected] 

編輯:如果您在陣列中的多個值,你可以使用:

df1 = df['email'].apply(pd.Series).fillna('') 
print df1 
        0     1     2 
0 [email protected]          
1 [email protected]          
2 [email protected]          
3 [email protected] [email protected]     
4 [email protected] [email protected] [email protected] 
+0

謝謝你的快速反應。我列的類型爲<類型「numpy.ndarray」>。我試圖將其轉換爲列表,然後應用系列方法,但它給出了一個錯誤「ValueError:無法從形狀(2,6)廣播輸入數組到形狀(6)」..任何建議將不勝感激。 – user4349490

+0

第二個選項沒有轉換應該工作。 – jezrael

+0

是的,它適用於一維數組。是否有可能爲多維數組做到這一點。一旦我獲得了15點聲望,我就會高調回答這個問題。謝謝 – user4349490