2016-03-31 23 views
-1

ben aşağıdaki kod, yeni bir sütun sütun v2 dönüşümü ve eklemeye çalıştığınız adres şu şekilde ekleyebilirsiniz:piton pandalar dataframe: bir sütun dönüşümü ve

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

Ancak hat row.append(v4) çalışmıyor . Her satıra v4 eklemek için uygun bir yol ne olurdu? Teşekkürler!

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

ve beklenen yeni df olmalıdır:

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

neden olmasın 'df [ 'v4'] = myFunction.classify (df [ 'v2']) '? – jeremycg

cevap

0

birkaç yaklaşımlar çalıştı ve inanıyorum en iyisini şimdiye kadar altındadır çalışma:

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

işlevinizin bir sütun ve çıkışı bir sütun kabul edebilir

Halen df benziyor? Eğer öyleyse, df'niz üzerinde yineleme yapmanız gerekmez. Sadece bir sütunu geçirin ve çıkışı v4 olarak atayın.

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

Eğer fonksiyon bireysel girişi ihtiyacı varsa o zaman satırlar üzerinde yineleme değerlerin yerine sonra ilk sütun 'v4' oluşturup. Yine, buraya eklemeniz gerekmeyecek.

Münferit giriş durumundaki diğer bir seçenek, işlevinizi df ['v2'] sütununun tamamına uygulamak ve sonra bu çıkışı yukarıdaki gibi atamak için python yerleşik eşlemini() kullanmak olacaktır.

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

no, işlev dizeyi yalnızca girdi olarak alır – Edamame