Python pandas'ta mevcut DataFrame'e yeni sütun ekleme
Adlandırılmış sütunlara ve sürekli olmayan sayılara sahip aşağıdaki indeksli DataFrame'e sahibim:
a b c d
2 0.671399 0.101208 -0.181532 0.241273
3 0.446172 -0.243316 0.051767 1.577318
5 0.614758 0.075793 -0.451460 -0.012493
Mevcut veri çerçevesine 'e'
adında yeni bir sütun eklemek istiyorum ve veri çerçevesindeki hiçbir şeyi değiştirmek istemiyorum (yani, yeni sütun her zaman DataFrame ile aynı uzunlukta olacak).
0 -0.335485
1 -1.166658
2 -0.385571
dtype: float64
Farklı join
, append
, merge
sürümlerini denedim, ancak istediğim sonucu alamadım, sadece en fazla hata aldım. Yukarıdaki örneğe e
sütununu nasıl ekleyebilirim?
882
3
Seriyi oluşturmak için orijinal df1 dizinlerini kullanın:
Edit 2015 Bazıları bu kodla
SettingWithCopyWarning
uyarısı aldığını bildirmiştir.Bununla birlikte, kod mevcut pandas sürümü 0.16.1 ile hala mükemmel bir şekilde çalışmaktadır.
SettingWithCopyWarning`, Dataframe'in bir kopyası üzerindeki muhtemelen geçersiz bir atama hakkında bilgi vermeyi amaçlar. Mutlaka yanlış yaptığınızı söylemez (yanlış pozitifleri tetikleyebilir), ancak 0.13.0'dan itibaren aynı amaç için daha uygun yöntemler olduğunu bilmenizi sağlar. Sonra, eğer uyarı alırsanız, sadece tavsiyesini takip edin: Bunun yerine .loc[row_index,col_indexer] = value kullanmayı deneyin
Aslında, bu şu anda pandas dokümanlarında açıklandığı gibi daha verimli bir yöntemdir.
Düzenleme 2017
Yorumlarda ve @Alexander tarafından belirtildiği gibi, şu anda bir Serinin değerlerini bir DataFrame'in yeni bir sütunu olarak eklemek için en iyi yöntem
assign
kullanmak olabilir:Bu, yeni bir sütun eklemenin basit yoludur:
df['e'] = e
Bunu doğrudan NumPy aracılığıyla yapmak en verimli yöntem olacaktır:
Orijinal (çok eski) önerimin
map
kullanmak olduğunu unutmayın (ki bu çok daha yavaştır):