Python pandalar mevcut DataFrame ekleyerek yeni bir sütun
Sütun ve satır koddan gibi değil sürekli sayılarla endeksli adında bir DataFrame var:
df1 = DataFrame(np.random.randn(10, 4), columns=['a', 'b', 'c', 'd'])
mask = df1.applymap(lambda x: x <-0.7)
df1 = df1[-mask.any(axis=1)]
sLength = len(df1['a'])
e = Series(np.random.randn(sLength))
Yeni sütun 'e' mevcut df ve df bir şey. değişiklik yapmak eklemek istiyorum (Serisi her zaman bir dataframe aynı uzunlukta.) join
, append
, merge
ama benim istediğim şey bu değil, hata en fazla farklı versiyonu deneyin.
Dizi ve df zaten verilmiştir ve yukarıdaki kodu örnek vermek için sadece.
Bunun için birkaç kolay yolu vardır ama çözemedim olduğundan eminim
CEVAP
Orijinal df1 dizinleri serisi oluşturmak için kullanın:
df1['e'] = Series(np.random.randn(sLength), index=df1.index)
Düzenleme 2015
Bu kod ile SettingWithCopyWarning
get bildirdi.
Ancak kod hala geçerli pandalar sürümü ile mükemmel 0.16.1 çalışır.
>>> sLength = len(df1['a'])
>>> df1
a b c d
6 -0.269221 -0.026476 0.997517 1.294385
8 0.917438 0.847941 0.034235 -0.448948
>>> df1['e'] = p.Series(np.random.randn(sLength), index=df1.index)
>>> df1
a b c d e
6 -0.269221 -0.026476 0.997517 1.294385 1.757167
8 0.917438 0.847941 0.034235 -0.448948 2.228131
>>> p.version.short_version
'0.16.1'
SettingWithCopyWarning
Dataframe bir kopyası üzerinde muhtemelen geçersiz bir atama bilgilendirmektir. Mutlaka sen yanlış yaptın demiyor (yanlış pozitif tetikleyebilir) ama 0.13.0 aynı amaç için daha uygun yöntemler var sen haber ver. Eğer uyarı alırsanız o zaman, sadece onun tavsiye izleyin:Kullanmayı deneyin .[] row_index,col_indexer = değeri yerine loc
>>> df1.loc[:,'f'] = p.Series(np.random.randn(sLength), index=df1.index)
>>> df1
a b c d e f
6 -0.269221 -0.026476 0.997517 1.294385 1.757167 -0.050927
8 0.917438 0.847941 0.034235 -0.448948 2.228131 0.006109
>>>
Aslında, bu, şu anda described in pandas docs olarak daha etkili bir yöntemdir
python: pandalar dataframe sütun başlı...
Python Pandalar - Yeniden Sipariş sütu...
Pandalar: değerler önceden varolan bir...
Silmek sütun pandalar DataFrame...
Nasıl yeni satır veya boşluk ekleyerek...