2014-10-06 32 views
9

Başka bir panda DataFrame'deki değerlere eşit olan bir DataFrame pandasında yeni bir sütun oluşturmaya çalışıyorum. Yeni sütunu oluşturmaya çalışırken yeni sütun değerleri için NaN aldım.Yeni sütun pandalara eklendiğinde NaN değerleri DataFrame

Önce bazı verileri almak için bir API çağrısı kullanın ve 'mydata' DataFrame tarihleri ​​

mydata = Quandl.get(["YAHOO/INDEX_MXX.4"], 
        trim_start="2001-04-01", trim_end="2014-03-31", 
        collapse="monthly") 

Aşağıdaki kod ile bir CSV aldığım sonraki DataFrame tarafından dizine veri sütunu olduğunu ve

DWDATA['MXX'] = mydata.iloc[:,0] 
: o MyData '

DWDATA = pandas.DataFrame.from_csv("filename", 
            header=0, 
            sep=',', 
            index_col=0, 
            parse_dates=True, 
            infer_datetime_format=True) 

sonra bu gibi yeni bir sütun oluşturmak için çalışırken aynı sayıda satıra sahip verilerin sayıda sütun var

Yine, NaN değerlerini alıyorum. Birisi bana neden bunu yaptığını ve nasıl çözüleceğini anlamamda yardımcı olabilir mi? Okuduklarımdan indekslerimde yanlış bir şey var gibi görünüyor. Dizinler, her bir DataFrame'deki tarihlerdir, ancak 'mydata', ayın başlangıcına sahip olurken, "DWDATA" ayın başlangıç ​​tarihlerine sahiptir.

+5

endeksi üst üste etmezse: satır sayısı yana

iki DataFrames için tam olarak eşit, ayrıca sadece yeni 'DWDATA' sütuna 'MyData' değerlerini geçebilir sen tarif edersin, o zaman gerçekten NaN'leri alacaksın. Her ikisinden birinin indisini değiştirmek zorunda kalacaksınız, ya da satır sayısı tam olarak eşit ise, yeni sütuna değerleri (indekssiz) koymalısınız ('mydata.iloc [:, 0] .values' – joris

+0

Ekleme '.values' işe yaradı! Teşekkürler @joris ve ben endekslerin gelecekte eşit olması gerektiğini hatırlayacağım! – gtnbz2nite

cevap

12

Dizinler tam olarak eşit olmadığından, NaN'ler sonuçlanır. Dizinlerden biri veya her ikisi eşleşecek şekilde değiştirilmelidir. Örnek:

mydata = mydata.set_index(DWDATA.index) 

yukarıdaki 'DWDATA' DataFrame dizinini eşleşecek şekilde 'mydata' DataFrame dizinini değişecektir. (Aynı

DWDATA['MXX'] = mydata.iloc[:,0].values 
İlgili konular