2016-01-30 16 views
8

Hier ist der Code, ich arbeite mit:Python Reindex Producing Nan

import pandas as pd

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

So ursprünglich alles ist in Ordnung und test3 einen Index 'a' 'b' 'c' hat und Werte 1,2,3. Aber dann, wenn ich Test3 neu indizieren muss, bekomme ich, dass meine Werte 1 2 3 verloren sind. Warum das? Die gewünschte Ausgabe wäre:

f 1 
g 2 
z 3 
+0

Die [docs] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.reindex.html#pandas.Series.reindex) sind bei diesem Verhalten eindeutig: 'Conform Series to neuer Index mit optionaler Fülllogik, Platzieren von NA/NaN an Stellen, die im vorherigen Index keinen Wert haben "Wenn Sie nur die Indexwerte überschreiben wollen, dann tun Sie" test3.index = ['f', 'g', 'z'] ' – EdChum

+0

@EdChum also, wie würde ich den neuen Index mit den gleichen Werten füllen wie vorher? –

Antwort

6

Die docs auf diesem Verhalten sind klar:

Serie zu neuem Index mit optionaler Befüllungs Logik Conform Plazieren NA/NaN in Orten in den vorherigen keinen Wert aufweisen Index

, wenn Sie nur die Indexwerte zu überschreiben wollen, dann tun:

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

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

Ich verstehe das. Mein Problem ist, dass ich einen größeren Datenframe namens "Daten" habe und wenn ich ts = pd.Series (Daten = Daten ['Nasdaq Composite'], index = Daten ['Datum']) mache, bekomme ich eine Spalte von Nan wo ich würde Werte erwarten. Also habe ich versucht, ein reproduzierbares Ergebnis zu erstellen, ohne den Datensatz aufzusetzen. –

+0

Erneut das gleiche wie Reindexing, wenn Sie eine neue Serie basierend auf vorhandenen Daten erstellen möchten, dann müssen Sie die Reihe abflachen: 'ts = pd.Series (Daten = Daten ['Nasdaq Composite']. Werte, Index = Daten ['Datum']) 'wird funktionieren – EdChum

+0

vielen Dank Ich bin sehr sehr neu zu Python, so dass das" .Values ​​"Geschäft hat es für mich. –

Verwandte Themen