Ich habe einen Datenrahmen (läßt es „best_trades“ nennen), die solche wie folgt lautet:Python Pandas - Funktionen aus dem groupby
exit_time netgain_by_MAE
2000-02-01 07:00:00 2000-02-01 11:30:00 2.083333
2000-02-01 08:30:00 2000-02-01 11:30:00 2.625000
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-01 09:30:00 2000-02-01 11:30:00 2.000000
2000-02-01 10:30:00 2000-02-01 11:30:00 2.312500
2000-02-02 13:30:00 2000-02-02 15:00:00 2.000000
2000-02-02 14:00:00 2000-02-02 15:00:00 2.428571
2000-02-02 15:00:00 2000-02-03 00:00:00 3.000000
2000-02-03 02:30:00 2000-02-03 07:30:00 2.000000
2000-02-03 10:00:00 2000-02-03 15:00:00 2.222222
2000-02-03 10:30:00 2000-02-04 00:00:00 3.259259
2000-02-03 11:00:00 2000-02-04 00:00:00 4.666667
2000-02-03 11:00:00 2000-02-04 01:00:00 2.629630
2000-02-03 11:00:00 2000-02-04 01:30:00 14.500000
2000-02-03 12:30:00 2000-02-04 01:30:00 11.600000
2000-02-03 13:00:00 2000-02-04 01:30:00 5.300000
2000-02-03 13:30:00 2000-02-04 01:30:00 2.700000
2000-02-03 14:00:00 2000-02-04 03:30:00 4.100000
2000-02-03 14:30:00 2000-02-04 03:30:00 2.600000
Der Datenrahmen eine Liste von Geschäften vertreten. Die erste Spalte repräsentiert die Eintrittszeit des Handels, die zweite die Austrittszeit, die dritte Spalte eine benutzerdefinierte Metrik, die ich erstellt habe.
Ich möchte den höchsten Wert von netgain_by_MAE für Trades berechnen, die in der Zeit überlappen, zum Beispiel jene diejenigen:
2000-02-01 07:00:00 2000-02-01 11:30:00 2.083333
2000-02-01 08:30:00 2000-02-01 11:30:00 2.625000
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-01 09:30:00 2000-02-01 11:30:00 2.000000
2000-02-01 10:30:00 2000-02-01 11:30:00 2.312500
(hier das Ergebnis wäre 2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
)
ich es geschafft abrufen die Zeilen mit der groupby Funktion: best_trades = best_trades.groupby(['MAE_ts'])['netgain_by_MAE'].transform('max')
jedoch gibt diese eine df wie folgt:
2000-02-01 07:00:00 2.083333
2000-02-01 08:30:00 3.312500
2000-02-01 09:00:00 3.312500
2000-02-01 09:30:00 3.312500
2000-02-01 10:30:00 3.312500
2000-02-02 13:30:00 2.428571
...
Wie behält man die gleichen Spalten wie der ursprüngliche Datenrahmen, nur die Zeilen behalten, die den maximalen Wert von netgain_by_mae für jede Gruppe haben? (dh würde Ich mag die folgende Ausgabe haben:
2000-02-01 09:00:00 2000-02-01 11:30:00 3.312500
2000-02-02 14:00:00 2000-02-02 15:00:00 2.428571
2000-02-02 15:00:00 2000-02-03 00:00:00 3.000000
...
, die große thx ist! aber in meinem Beispiel die erste Spalte der Index (der „ENTRY_TIME“). wenn ich laufe das Ergebnis Code irgendwie ist einfach fehlt, dass erste Spalte (es so etwas gibt): '0 2000-01-03 04:00:00 2.200000' Jeder Gedanke, wie man diesen ersten Zeitstempel-Index als Index behält? –
benutze' reset_index' b Bevor Sie den Code oben und dann nach dem obigen Code ausführen, führen Sie 'df.set_index ('entry_time')' aus –