Code: Select all
import polars as pl
highs = pl.from_repr("""
┌─────────────────────┬──────────┐
│ date ┆ price │
│ --- ┆ --- │
│ datetime[μs] ┆ f64 │
╞═════════════════════╪══════════╡
│ 2023-12-20 14:10:00 ┆ 2039.105 │
│ 2023-12-21 14:45:00 ┆ 2045.795 │
│ 2023-12-22 15:10:00 ┆ 2069.708 │
│ 2023-12-26 06:45:00 ┆ 2064.885 │
│ 2023-12-27 18:00:00 ┆ 2083.865 │
│ 2023-12-28 03:05:00 ┆ 2088.224 │
│ 2023-12-28 15:00:00 ┆ 2080.245 │
│ 2023-12-29 07:10:00 ┆ 2074.485 │
└─────────────────────┴──────────┘
""")
Jetzt habe ich das Problem mit Polars, dass ich den Preis basierend auf einer verschachtelten Liste, die ich separat habe, kategorisieren möchte. Ich verwende den folgenden Code:
Code: Select all
for i ,group in enumerate(resistance_groups):
highs = highs.with_columns(
pl.when(pl.col('price').is_in(group))
.then(i+1)
.otherwise(None)
.alias('groups')
)
Code: Select all
resistance_groups = [[2064.885, 2069.708, 2074.485], [2080.245, 2083.865, 2088.224]]
Das Ergebnis des obigen Codes in der ersten Schleife ist:
Code: Select all
┌─────────────────────┬──────────┬────────┐
│ date ┆ price ┆ groups │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ f64 ┆ i32 │
╞═════════════════════╪══════════╪════════╡
│ 2023-12-20 14:10:00 ┆ 2039.105 ┆ null │
│ 2023-12-21 14:45:00 ┆ 2045.795 ┆ null │
│ 2023-12-22 15:10:00 ┆ 2069.708 ┆ 1 │
│ 2023-12-26 06:45:00 ┆ 2064.885 ┆ 1 │
│ 2023-12-27 18:00:00 ┆ 2083.865 ┆ null │
│ 2023-12-28 03:05:00 ┆ 2088.224 ┆ null │
│ 2023-12-28 15:00:00 ┆ 2080.245 ┆ null │
│ 2023-12-29 07:10:00 ┆ 2074.485 ┆ 1 │
└─────────────────────┴──────────┴────────┘
Code: Select all
┌─────────────────────┬──────────┬────────┐
│ date ┆ price ┆ groups │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ f64 ┆ i32 │
╞═════════════════════╪══════════╪════════╡
│ 2023-12-20 14:10:00 ┆ 2039.105 ┆ null │
│ 2023-12-21 14:45:00 ┆ 2045.795 ┆ null │
│ 2023-12-22 15:10:00 ┆ 2069.708 ┆ null │
│ 2023-12-26 06:45:00 ┆ 2064.885 ┆ null │
│ 2023-12-27 18:00:00 ┆ 2083.865 ┆ 2 │
│ 2023-12-28 03:05:00 ┆ 2088.224 ┆ 2 │
│ 2023-12-28 15:00:00 ┆ 2080.245 ┆ 2 │
│ 2023-12-29 07:10:00 ┆ 2074.485 ┆ null │
└─────────────────────┴──────────┴────────┘
Kann jemand eine Möglichkeit vorschlagen, entweder .otherwise() zu stoppen oder die Preisspalte auf andere Weise zu kategorisieren?
Ich habe auch versucht, mehrere Wenn-Dann-Ausdrücke zu verwenden, und es hat auch nicht funktioniert.
Die Verwendung einer anderen Spalte war auch nicht so gut.
Und gerade dabei Fall: Das Entfernen von .otherwise( ) bedeutet, dass die Werte auf Null gesetzt werden.
Mobile version