2017-09-21 71 views
-1

我在object類型的熊貓df中有一列,我想解析它以獲取字符串中的第一個數字,並創建一個包含該數字的新列作爲int使用正則表達式在熊貓數據框中創建新列

例如:

現有的DF

col 
    'foo 12 bar 8' 
    'bar 3 foo' 
    'bar 32bar 98' 

期望中的DF

col    col1 
    'foo 12 bar 8' 12 
    'bar 3 foo'  3 
    'bar 32bar 98' 32 

我有在列系列

int(re.search(r'\d+', df.iloc[0]['col']).group())

012上的任何單個細胞工程代碼

上面的代碼工作正常,並返回12,因爲它應該。但是,當我嘗試使用全系列創建一個新的列:

df['col1'] = int(re.search(r'\d+', df['col']).group())

我收到以下錯誤:

類型錯誤:預期字符串或字節狀物體

我試過包裝一str()各地df['col']這得到了在COL1擺脫錯誤的,但取得了全0

我也試着轉換col到的list字符串並遍歷list,這隻會產生相同的錯誤。有誰知道我做錯了什麼?幫助將不勝感激。

+0

檢查出來的'DataFrame.apply()'方法。可能你的計算對於簡單的分配來說太複雜了。 –

+2

你可以試試'df ['col']。str.extract(r'(\ d +)')' –

+0

@WiktorStribiżew,我還會加上'expand = False' ... – MaxU

回答

0

這將這樣的伎倆:

search = []  
for values in df['col']: 
    search.append(re.search(r'\d+', values).group()) 

df['col1'] = search 

輸出看起來是這樣的:

  col col1 
0 foo 12 bar 8  12 
1  bar 3 foo  3 
2 bar 32bar 98  32 
+0

完美,謝謝! – Cam8593

+0

不客氣! – Albo

相關問題