Ich habe eine Pandas DataFrame
in dem result
Variable bekommt und will einige Zeilen daraus extrahieren, und zwar Gruppe sie durch Paare von id
s und Zeilen auswählen, auf ein Minimum score
s entsprechen. HierUnzureichende Indizierung von Pandas Array
ist der Code:
gb = result.groupby(['id1', 'id2'], sort=False, group_keys=False, as_index=False)
result1 = result.loc[gb['score'].idxmin()].dropna()
ich den Code im Debugger Ergebnisse zu überprüfen für Richtigkeit gestoppt haben. Die Ergebnisse sind seltsam.
>>> gb['score'].idxmin().shape
Out[11]: (1800L,)
>>> result1.shape
Out[12]: (1810, 6)
Woher kommen diese 10 Zeilen ?!
Mehr, ich habe genau den gleichen Code in Jupyter Notebook interaktiv auf der gleichen Datei ausgeführt, und haben 1800 Zeilen.
Ich benutze Anaconda mit allen Updates. Hier ist die Versionsstring
Python 2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:58:36) [MSC v.1500 64 bit (AMD64)]
In der Tat war das Problem in nicht eindeutigen Index. Das Datenrahmenergebnis wurde von "pd.concat ([df1, df2])" erhalten. Das Hinzufügen von 'ingore_index = True' hat das Problem gelöst. Und die Jupyter Zelle enthielt tatsächlich "ignore_index = True". – wl2776