Fügen Sie eine Spalte zu einem Polars DataFrame hinzu, basierend auf einer gruppierten Aggregation einer anderen SpaltePython

Python-Programme
Anonymous
 Fügen Sie eine Spalte zu einem Polars DataFrame hinzu, basierend auf einer gruppierten Aggregation einer anderen Spalte

Post by Anonymous »

Ich habe einen LazyFrame aus Zeit, Symbolen und mittlerem_Preis:
Beispiel:

Code: Select all

time                symbols             mid_price
datetime[ns]        str                 f64
2024-03-01 00:01:00 "PERP_SOL_USDT@…    126.1575
2024-03-01 00:01:00 "PERP_WAVES_USD…    2.71235
2024-03-01 00:01:00 "SOL_USDT@BINAN…    126.005
2024-03-01 00:01:00 "WAVES_USDT@BIN…    2.7085
2024-03-01 00:02:00 "PERP_SOL_USDT@…    126.3825
Ich möchte einige Aggregationen über die Zeitdimension durchführen (z. B. nach Symbol gruppieren):

Code: Select all

aggs = (
df
.group_by('symbols')
.agg([
pl.col('mid_price').diff(1).alias("change"),
])
)
Ich erhalte eine Liste jedes Werts pro eindeutigem Symbol zurück Wert:

Code: Select all

>>> aggs.head().collect()

symbols             change
str                 list[f64]
"SOL_USDT@BINAN…    [null, 0.25, … -0.55]
"PERP_SOL_USDT@…    [null, 0.225, … -0.605]
"WAVES_USDT@BIN…    [null, -0.002, … -0.001]
"PERP_WAVES_USD…    [null, -0.00255, … 0.0001]
Ich möchte dies jetzt wieder mit meinem ursprünglichen Datenrahmen verbinden:

Code: Select all

df = df.join(
aggs,
on='symbols',
how='left',
)
Dies führt nun dazu, dass jede Zeile die vollständige Liste der Änderungen erhält und nicht den jeweiligen Wert.

Code: Select all

>>> df.head().collect()

time                symbols             mid_price   change
datetime[ns]        str                 f64         list[f64]
2024-03-01 00:01:00 "PERP_SOL_USDT@…    126.1575    [null, 0.225, … -0.605]
2024-03-01 00:01:00 "PERP_WAVES_USD…    2.71235     [null, -0.00255, … 0.0001]
2024-03-01 00:01:00 "SOL_USDT@BINAN…    126.005     [null, 0.25, … -0.55]
2024-03-01 00:01:00 "WAVES_USDT@BIN…    2.7085      [null, -0.002, … -0.001]
2024-03-01 00:02:00 "PERP_SOL_USDT@…    126.3825    [null, 0.225, … -0.605]
Ich habe bitte zwei Fragen:
  • Wie kann ich die von meinem „group_by“ zurückgegebenen Listen entstapeln/auflösen, wenn ich sie wieder mit dem ursprünglichen Datenrahmen zusammenfüge?
  • Ist dies die empfohlene Methode, um aus einem „group_by“ eine neue Spalte zu meinem ursprünglichen Datenrahmen hinzuzufügen (das heißt: „group_by“ gefolgt von beitreten)?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post