我在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())
上面的代碼工作正常,並返回12,因爲它應該。但是,當我嘗試使用全系列創建一個新的列:
df['col1'] = int(re.search(r'\d+', df['col']).group())
我收到以下錯誤:
類型錯誤:預期字符串或字節狀物體
我試過包裝一str()
各地df['col']
這得到了在COL1擺脫錯誤的,但取得了全0
我也試着轉換col
到的list
字符串並遍歷list
,這隻會產生相同的錯誤。有誰知道我做錯了什麼?幫助將不勝感激。
檢查出來的'DataFrame.apply()'方法。可能你的計算對於簡單的分配來說太複雜了。 –
你可以試試'df ['col']。str.extract(r'(\ d +)')' –
@WiktorStribiżew,我還會加上'expand = False' ... – MaxU