2015-09-23 47 views
0

我有這樣的數據:提取元件,並創建新的列

df = 
id1, id2, string 
1, [2], 'foo' 
2, [3], 'bar' 
3, [4], 'baz' 

我想與該數組中的值來替換ID2。

這裏是我試過:

x = df['id2'].map(lambda x : x[0]) 

隨着x的與所述值的一系列我想,我可以列綁定到我的DF的希望。實際發生的是它與IndexError出錯。在這種情況下,我提供了一個函數來代替lambda函數,以便除錯誤外可以返回所有的空值。

看起來像這樣應該是直截了當的,但即使在它睡覺後,我還沒有能夠找出它。

+1

什麼是ID2的數據類型 - DF。 id2.dtype?它是一個字符串,列表,np.array? –

回答

1

這適用於if'id2'作爲數組存儲。你可能只需要調用tolist()來獲得你想要的輸出。

x = df['id2'].map(lambda x: x[0]).tolist() 

或者,如果「ID2」存儲爲串,可以使用AST包調用literal_eval消耗作爲數組:

import pandas as pd 
from io import StringIO 

data = StringIO(u'''id1,id2,string 
1,[2],foo 
2,[3],bar 
3,[4],baz''') 

df = pd.read_csv(data) 

import ast 
x = df['id2'].map(lambda x: ast.literal_eval(x)[0]).tolist() 
相關問題