SORU
23 EYLÜL 2012, Pazar


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
23 EYLÜL 2012, Pazar


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • UniqueApps

    UniqueApps

    4 Ocak 2009