2016-03-31 73 views
-1

我有以下的代碼,試圖轉換列V2,並添加一個新列:蟒蛇大熊貓數據框:變換列,並將其追加到尾部

df = pd.read_csv('test1.csv') 
for index, row in df.iterrows(): 
    v4 = myFunction.classify(row['v2']) 
    row['v4'] = v4 
    row.append(v4) 

然而,行row.append(v4)不起作用。將v4追加到每一行的正確方法是什麼?謝謝!

目前,DF的樣子:

v1  v2 v3 result 
0 12  Dog 31  0 
1 34 Frog 4  1 
2 32 Snake 5  1 
3 7  Cat 2  0 

,並預期新的DF應該是:

v1  v2 v3 result v4 
0 12  Dog 31  0 Mammal 
1 34 Eagle 4  1 Bird 
2 32 Snake 5  1 Reptile 
3 7  Cat 2  0 Mammal 
+0

爲什麼不'DF [ 'V4'] = myFunction.classify(DF [ 'V2'] )'? – jeremycg

回答

0

嘗試了一些方法,我相信最好的工作之一,所以遠低於:

df['v4'] = df['v2'].apply(myFunction.classify) 
0

你的函數可以接受一列和輸出列?如果是這樣,你不需要遍歷你的df。只需傳入一列並將輸出分配給v4。

v4 = myFunction.classify(df['v2']) 
df['v4'] = v4 

如果你的函數需要單獨輸入,那麼首先創建列'v4',然後替換你迭代的值。再一次,你不需要在這裏追加。

單個輸入案例中的另一個選擇是使用python內置map()將函數應用於df ['v2']的整個列,然後如上所述分配輸出。

df['v4'] = map(myFunction.classify, df['v2']) 
+0

不,該函數僅將字符串作爲輸入 – Edamame