Ich habe einen Datenrahmen von 5 bestehend Reihe abnehm (290 Zeilen pro Stück), deren Werte zwischen 0 und 1.Pandas: Reindizieren Datenrahmen wird nicht Anfangswerte halten
Die Daten sehen wie folgt aus:
A B C D E
0.60 0.998494 1.0 1.0 1.0 1.0
0.65 0.997792 1.0 1.0 1.0 1.0
0.70 0.996860 1.0 1.0 1.0 1.0
0.75 0.995359 1.0 1.0 1.0 1.0
0.80 0.992870 1.0 1.0 1.0 1.0
ich will die Datenrahmen indizieren, so daß zwischen jeder Reihe I Schritten von 0,01 haben. Ich habe pd.DataFrame.reindex
versucht, aber ohne Erfolg: die eine Datenrahmen gibt, wo die meisten der Werte np.NaN
import pandas as pd
df = pd.read_csv('http://pastebin.com/raw/yeHdk2Gq', index_col=0)
print df.reindex(np.arange(0.6, 3.5, 0.025)).head()
sind die nur zwei gültige Zeilen zurückgibt, und wandelt die 288 anderen NaN
:
A B C D E
0.600 0.998494 1.0 1.0 1.0 1.0
0.625 NaN NaN NaN NaN NaN
0.650 0.997792 1.0 1.0 1.0 1.0
0.675 NaN NaN NaN NaN NaN
0.700 NaN NaN NaN NaN NaN ##This row existed before reindexing
Pandas können den neuen Index nicht mit den Anfangswerten vergleichen, obwohl es keine Rundungsprobleme zu geben scheint (der Anfangsindex hat nicht mehr als 2 Dezimalstellen).
Das scheint irgendwie auf meine Daten wie die folgenden Arbeiten im Zusammenhang wie beabsichtigt:
df = pd.DataFrame(np.random.randn(10,3), columns=['A', 'B', 'C'])\
.reindex(np.arange(1, 10, 0.5))
print df.head()
Welche gibt:
A B C
1.0 0.206539 0.346656 2.578709
1.5 NaN NaN NaN
2.0 1.164226 2.693394 1.183696
2.5 NaN NaN NaN
3.0 -0.532072 -1.044149 0.818853
Vielen Dank für Ihre Hilfe!
IIUC dann können Sie 'nennen df.apply (pd.Series.interpolate)' – EdChum
sicher, dass es die Absicht ist, aber ich kann meinen Datenrahmen nicht neu indizieren: das Anwenden von 'pd.DataFrame.reindex' löscht die Anfangswerte (siehe dritten Codeblock, Zeile 0.70) – jodoox
Können Sie überprüfen, ob 0,70 der tatsächliche Wert ist, kann es eine Art Float-Ungenauigkeit geben – EdChum