2013-04-01 15 views
7

Zipline ve pandalarda çalışıyorum ve pandas.Panel, to_frame() yöntemini kullanarak pandas.DataFrame'a dönüştürdüm.MultiIndex DataFrame'i panda'lardan satır aralığı için sütun bilmecesine dönüştürme

        price 
major      minor     
2008-01-03 00:00:00+00:00 SPY 129.93 
          KO  26.38 
          PEP  64.78 
2008-01-04 00:00:00+00:00 SPY 126.74 
          KO  26.43 
          PEP  64.59 
2008-01-07 00:00:00+00:00 SPY 126.63 
          KO  27.05 
          PEP  66.10 
2008-01-08 00:00:00+00:00 SPY 124.59 
          KO  27.16 
          PEP  66.63 

Böyle bakmak için bu çerçeveyi dönüştürmek gerekir: Bu gördüğünüz gibi çok endeksli olduğu ortaya çıkan pandas.DataFrame olduğunu ben Pivot yöntemi denedim

      SPY  KO  PEP 
2008-01-03 00:00:00+00:00 129.93 26.38 64.78 
2008-01-04 00:00:00+00:00 126.74 26.43 64.59 
2008-01-07 00:00:00+00:00 126.63 27.05 66.10 
2008-01-08 00:00:00+00:00 124.59 27.16 66.63 

, yığın/İstenmeyen, vb. ama bu yöntemler aradığım şey değil. Bu noktada gerçekten oldukça sıkışmış ve herhangi bir yardım takdir edilmektedir.

cevap

12

Zaten bir MultiIndex'iniz zaten var, stack ve unstack satırları cols'e taşımak için kullanmak istediğiniz şeydir. Olduğu söyleniyor, unstack tam olarak ne yapmak istediğinizi yapmalı. Bir DataFrame df varsa, df2 = df.unstack('minor') hile yapmalıdır. Veya daha basit olarak, varsayılan olarak stack/unstack, en içteki düzeyi df2 = df.unstack() kullanın.

+4

Aargh; beni ona yen. indeksi sıfırladıktan sonra "pivot" da çalışmalıdır, yani "df.reset_index(). pivot" ("major", "minor") '(bir", "fiyat" ile veya olmadan) "veya" ["fiyat"] ', adı hala etrafında yüzen olup olmadığını bağlı olarak değişir.) – DSM

+0

Ha güzel, açık bir şekilde güvensizlik kullanmıyordum, teşekkürler. –