PANDAS

2016-04-11 31 views
14

dizindeki birleşik veri çerçevelerini birleştirme İki adet veri çerçevem ​​var ve bunların her birinde iki dizin sütunu var. Onları birleştirmek istiyorum. Örneğin, ilk dataframe şudur:PANDAS

     V1 

    A  1/1/2012 12 
      2/1/2012 14 
    B  1/1/2012 15 
      2/1/2012 8 
    C  1/1/2012 17 
      2/1/2012 9 

ikinci dataframe şudur:

     V2 

    A  1/1/2012 15 
      3/1/2012 21    
    B  1/1/2012 24 
      2/1/2012 9 
    D  1/1/2012 7 
      2/1/2012 16 

ve sonuç olarak aşağıdaki almak istiyorum:

     V1 V2 

    A  1/1/2012 12 15 
      2/1/2012 14 N/A 
      3/1/2012 N/A 21   
    B  1/1/2012 15 24 
      2/1/2012 8 9 
    C  1/1/2012 7 N/A 
      2/1/2012 16 N/A 
    D  1/1/2012 N/A 7 
      2/1/2012 N/A 16 

I Birkaç sürüm usig pd.merge ve .join denedim, ama hiçbir şey işe yaramıyor. Önerin var mı? Çok teşekkür ederim.

+0

pd.concat'i deneyin ... Bu çalışmalıdır. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html .. veri çerçevelerine katılmak istediğiniz ekseni seçebilirsiniz. – Joey

cevap

18

Varsayılan olarak endeksi katılır hangi join kullanmak gerekir. İstediğiniz sonucu verdiğinizde, birleştirme türü olarak outer kullanmanız gerekir.

>>> df1.join(df2, how='outer') 
      V1 V2 
A 1/1/2012 12 15 
    2/1/2012 14 NaN 
    3/1/2012 NaN 21 
B 1/1/2012 15 24 
    2/1/2012 8 9 
C 1/1/2012 17 NaN 
    2/1/2012 9 NaN 
D 1/1/2012 NaN 7 
    2/1/2012 NaN 16 

İmza: _.join (diğer = = 'left' nasıl Hiçbiri, lsuffix = '', rsuffix = '', sort = False üzerine) docstringe: diğer DataFrame ile sütunları Üyelik endekste veya bir anahtarda sütununda. Bir listeyi geçirerek bir kerede birden çok DataFrame nesnesini bir kerede dizine ekleyin.

+0

Bu eser, teşekkür ederim! – km1234

5

Sen merge ile yapabilirsiniz:

df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True) 

kelime argüman how='outer'NaN ile indeksleri eksik doldurarak, her iki çerçevede tüm indeksleri tutar. left_index ve right_index anahtar kelime bağımsız değişkenleri, birleştirme işleminin endekslerde yapılmasını sağlar. Birleştirme işlemini gerçekleştirdikten sonra bir sütuna tüm NaN alırsanız, başka bir sorun giderme adımı, dizinlerinizin aynı dtypes olduğunu doğrulamaktır.

merge Yukarıdaki kod benim için şu çıktıyı üretir:

   V1 V2 
A 2012-01-01 12.0 15.0 
    2012-02-01 14.0 NaN 
    2012-03-01 NaN 21.0 
B 2012-01-01 15.0 24.0 
    2012-02-01 8.0 9.0 
C 2012-01-01 17.0 NaN 
    2012-02-01 9.0 NaN 
D 2012-01-01 NaN 7.0 
    2012-02-01 NaN 16.0 
+0

Bu da çalışıyor, teşekkürler! – km1234

İlgili konular