[FIXED] Gruppieren von OHLC-Daten nach Tag mit groupby

Ausgabe

Ich lese Minutendaten aus einer SQLite-Datenbank in einen Datenrahmen, in dem der Index ein Datetime-Objekt ist:

                             open    high     low   close  volume  trade_count        vwap ticker
index                                                                                            
2022-09-13 04:26:00+00:00  163.50  163.50  163.50  163.50   298.0         12.0  163.503255   AAPL
2022-09-13 04:45:00+00:00  163.50  163.50  163.50  163.50   727.0          1.0  163.500000   AAPL
2022-09-13 05:16:00+00:00  163.43  163.43  163.43  163.43   202.0          4.0  163.430000   AAPL
2022-09-13 05:44:00+00:00  163.50  163.50  163.50  163.50   121.0          2.0  163.499587   AAPL
2022-09-13 05:45:00+00:00  163.46  163.46  163.46  163.46   200.0          2.0  163.460000   AAPL
...                           ...     ...     ...     ...     ...          ...         ...    ...
2022-09-14 19:57:00+00:00   99.73   99.73   99.69   99.69  1273.0         18.0   99.693425   ZROZ
2022-09-14 19:58:00+00:00   99.69   99.69   99.66   99.69  1114.0         11.0   99.686965   ZROZ
2022-09-14 19:59:00+00:00   99.69   99.82   99.69   99.76  9764.0         76.0   99.736332   ZROZ
2022-09-14 20:00:00+00:00   99.76   99.76   99.76   99.76  2168.0          1.0   99.760000   ZROZ
2022-09-14 20:33:00+00:00   99.96   99.96   99.96   99.96   150.0          4.0   99.968667   ZROZ

[317028 rows x 8 columns] df

Ich möchte diesen massiven Datenrahmen in Bits aufteilen, die nach Ticker und Tag gruppiert sind. Wenn ich die folgende Methode versuche:

table = df.groupby(pd.Grouper(key='index', freq='1D'))

Ich bekomme den Fehler:

    raise KeyError(f"The grouper name {key} is not found")
KeyError: 'The grouper name index is not found'

Wenn ich den Schlüssel ändere auf:

table = df.groupby(pd.Grouper(key=df.index, freq='1D'))

Ich bekomme den Fehler:

    if getattr(self._gpr_index, "name", None) == key and isinstance(
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Wie kann ich nach Ticker und nach Tag gruppieren?

Lösung

Da keyder Parameter für den Spaltennamen steht, können Sie ihn weglassen:

table = df.groupby(pd.Grouper(freq='1D'))

Oder levelParameter verwenden:

table = df.groupby(pd.Grouper(level='index', freq='1D'))

Oder indexin Spalte umwandeln (meiner Meinung nach zu kompliziert):

table = df.reset_index().groupby(pd.Grouper(key='index', freq='1D'))


Beantwortet von –
jezrael


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like