2012-07-30 44 views
11

iki büyücek (parçacıkları sağlanır) Ben birine Concat isteyen endeksler olarak eşitsiz tarihleri ​​ile DateFrame s pandas var:concat pandalar DataFrame

: Ben bu çalıştırırsanız

  NAB.AX         CBA.AX 
      Close Volume       Close Volume 
Date         Date 
2009-06-05 36.51 4962900    2009-06-08 21.95   0 
2009-06-04 36.79 5528800    2009-06-05 21.95 8917000 
2009-06-03 36.80 5116500    2009-06-04 22.21 18723600 
2009-06-02 36.33 5303700    2009-06-03 23.11 11643800 
2009-06-01 36.16 5625500    2009-06-02 22.80 14249900 
2009-05-29 35.14 13038600 --AND-- 2009-06-01 22.52 11687200 
2009-05-28 33.95 7917600    2009-05-29 22.02 22350700 
2009-05-27 35.13 4701100    2009-05-28 21.63 9679800 
2009-05-26 35.45 4572700    2009-05-27 21.74 9338200 
2009-05-25 34.80 3652500    2009-05-26 21.64 8502900 

Sorun şu ki

keys = ['CBA.AX','NAB.AX'] 
mv = pandas.concat([data['CBA.AX'][650:660],data['NAB.AX'][650:660]], axis=1, keys=stocks,) 

aşağıdaki DateFrame üretilir:

        CBA.AX   NAB.AX   
           Close Volume Close Volume 
Date              
2200-08-16 04:24:21.460041  NaN  NaN  NaN  NaN 
2203-05-13 04:24:21.460041  NaN  NaN  NaN  NaN 
2206-02-06 04:24:21.460041  NaN  NaN  NaN  NaN 
2208-11-02 04:24:21.460041  NaN  NaN  NaN  NaN 
2211-07-30 04:24:21.460041  NaN  NaN  NaN  NaN 
2219-10-16 04:24:21.460041  NaN  NaN  NaN  NaN 
2222-07-12 04:24:21.460041  NaN  NaN  NaN  NaN 
2225-04-07 04:24:21.460041  NaN  NaN  NaN  NaN 
2228-01-02 04:24:21.460041  NaN  NaN  NaN  NaN 
2230-09-28 04:24:21.460041  NaN  NaN  NaN  NaN 
2238-12-15 04:24:21.460041  NaN  NaN  NaN  NaN 

kimseyi mu Bunun neden böyle olabileceği hakkında bir fikriniz var mı?

Başka bir noktada: yahoo'dan verileri çekip normalize eden herhangi bir python kitaplığı var mı?

Şerefe.

DÜZENLEME: Başvuru için:

data = { 
'CBA.AX': <class 'pandas.core.frame.DataFrame'> 
    DatetimeIndex: 2313 entries, 2011-12-29 00:00:00 to 2003-01-01 00:00:00 
    Data columns: 
     Close  2313 non-null values 
     Volume 2313 non-null values 
    dtypes: float64(1), int64(1), 

'NAB.AX': <class 'pandas.core.frame.DataFrame'> 
    DatetimeIndex: 2329 entries, 2011-12-29 00:00:00 to 2003-01-01 00:00:00 
    Data columns: 
     Close  2329 non-null values 
     Volume 2329 non-null values 
    dtypes: float64(1), int64(1) 
} 
+1

sizin pandalar sürümü nedir? Bu, 0.8.1 –

+0

'da düzeltilen bir hataya benziyor. Evet, bu düşüncem de vardı. Bu sorunla ilk karşılaştığımda 0.8.0 koşuyordum ama şimdi 0.8.1 çalışıyorum ve aynı sonuç ortaya çıkıyor ... –

+1

Bu DataFrames'ın (wesmckinn AT gmail) paketlenmiş sürümlerini bana e-posta ile gönderebilir misiniz? Sorunu burada yeniden üretemiyorum. Ayrıca, 6/5/2012 tarihinden sonra NumPy 1.6.1 veya geliştirme sürümü kullandığınızı da kontrol edin. Belki de bu tartışmayı GitHub'a taşımak en iyisi –

cevap

7

Pandalar ile veri okumak için ve bunu bitiştirmek mümkündür.

İlk ithalat verileri bunu bitiştirmek Daha

In [449]: import pandas.io.data as web 

In [450]: nab = web.get_data_yahoo('NAB.AX', start='2009-05-25', 
            end='2009-06-05')[['Close', 'Volume']] 

In [451]: cba = web.get_data_yahoo('CBA.AX', start='2009-05-26', 
            end='2009-06-08')[['Close', 'Volume']] 

In [453]: nab 
Out[453]: 
      Close Volume 
Date      
2009-05-25 21.15 9685100 
2009-05-26 21.64 8541900 
2009-05-27 21.74 9042900 
2009-05-28 21.63 9701000 
2009-05-29 22.02 14665700 
2009-06-01 22.52 6782000 
2009-06-02 22.80 10473400 
2009-06-03 23.11 9931400 
2009-06-04 22.21 17869000 
2009-06-05 21.95 8214300 

In [454]: cba 
Out[454]: 
      Close Volume 
Date      
2009-05-26 35.45 4529600 
2009-05-27 35.13 4521500 
2009-05-28 33.95 7945400 
2009-05-29 35.14 12548500 
2009-06-01 36.16 4509400 
2009-06-02 36.33 4304900 
2009-06-03 36.80 4845400 
2009-06-04 36.79 4592300 
2009-06-05 36.51 4417500 
2009-06-08 36.51   0 

:

In [455]: keys = ['CBA.AX','NAB.AX'] 

In [456]: pd.concat([cba, nab], axis=1, keys=keys) 
Out[456]: 
      CBA.AX   NAB.AX   
      Close Volume Close Volume 
Date           
2009-05-25  NaN  NaN 21.15 9685100 
2009-05-26 35.45 4529600 21.64 8541900 
2009-05-27 35.13 4521500 21.74 9042900 
2009-05-28 33.95 7945400 21.63 9701000 
2009-05-29 35.14 12548500 22.02 14665700 
2009-06-01 36.16 4509400 22.52 6782000 
2009-06-02 36.33 4304900 22.80 10473400 
2009-06-03 36.80 4845400 23.11 9931400 
2009-06-04 36.79 4592300 22.21 17869000 
2009-06-05 36.51 4417500 21.95 8214300 
2009-06-08 36.51   0  NaN  NaN 
1

deneyin dış adına katılma.

Bir dizi hisse senedi ile çalışırken, genellikle "açık yüksek, düşük, yakın vb." Başlıklı bir kareyi bir sütun olarak kullanacağım. Bir veri yapısı istiyorsanız, bunun için Panelleri kullanırdım.

Yahoo verileri için, sen panda kullanabilirsiniz:

import pandas.io.data as data 
spy = data.DataReader("SPY","yahoo","1991/1/1")