2016-01-30 18 views
8

İşte ile çalışıyorum kodudur: Python Reindex Üretim Nan

test3 = pd.Series([1,2,3], index = ['a','b','c']) 
test3 = test3.reindex(index = ['f','g','z']) 

Yani aslen her şey gayet iyi ve test3 'a' 'b' 'c' bir dizin vardır

import pandas as pd

ve değerler 1,2,3. Ama sonra yeniden test testine geçtiğimde3 1 2 3 değerlerim kayboldu. Neden? İstenen çıkış olacaktır:

f 1 
g 2 
z 3 
+0

[docs] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.reindex.html#pandas.Series.reindex) bu davranışta nettir: 'Conform Series to opsiyonel dolum mantığı ile yeni indeks, indeks değerlerinin üzerine yazmak istiyorsanız NA/NaN'yi önceki indekste hiçbir değere sahip olmayan konumlara yerleştirirseniz, o zaman 'test3.index = ['f', 'g', 'z'] – EdChum

+0

@EdChum, yeni dizini daha önceki gibi aynı değerlerle doldurmaya nasıl giderim? –

cevap

6

docs bu davranışı üzerinde açıktır:

opsiyonel dolum mantığı ile yeni endekse Series Conform önceki hiçbir değeri olan yerlerde NA/NaN yerleştirerek endeks

sadece o endeks değerleri üzerine yazmak isterseniz yapın:

In [32]: 
test3.index = ['f','g','z'] 

test3 
Out[32]: 
f 1 
g 2 
z 3 
dtype: int64 
[ ]
+0

Bunu anlıyorum. Benim sorunum, "veri" adı verilen daha büyük bir Dataframe'im olması ve ts = pd.Series (data = data ['Nasdaq Composite'], index = data ['Date']) yaptığım yerde Nan’in değerler beklerdi. Bu yüzden veri setini koymadan tekrarlanabilir bir sonuç yaratmaya çalıştım. –

+0

Yine, reindexing ile aynıdır, eğer varolan verilere dayanarak yeni bir Seri oluşturmak istiyorsanız, diziyi düzleştirmeniz gerekir: ts = pd.Series (data = data ['Nasdaq Composite']. Değerler, index = veri ['Tarih']) 'çok çalışacağım – EdChum

+0

çok çok python için çok yeni, bu yüzden" .values ​​"iş benim için yaptı. –