Ich habe versucht, eine Gewichtsreihe basierend auf der Länge des Rollfensters aufzuteilen. Anwendungsfälle können z.B. sein Wir möchten einige benutzerdefinierte Gewichte für den gleitenden Durchschnitt anwenden. (Soweit ich weiß, ist bereits ein Rolling_Mean implementiert.)
Könnte mir jemand erklären, warum ich den folgenden Fehler habe und wie ich das, was ich oben beschrieben habe, am besten erreichen kann? Danke!
Nehmen wir an, mein rollierendes Fenster hat eine Länge von 5. Die ersten 4 Zeilen haben eine Länge von 1, 2, 3, 4 und deshalb möchte ich nur die ersten paar Gewichte erhalten. Ab der fünften Zeile erwarte ich, dass die Gewichtungen immer [.1, .2, .3, .4, .5] betragen.
Der folgende Code funktioniert irgendwie, aber nicht wirklich (wie ich [0.5], [0.4, 0.5], ..., [0.2, 0.3, 0.4, 0.5] für die ersten 4 Zeilen erwarte:
thread 'polars-4' panicked at crates/polars-core/src/frame/group_by/aggregations/agg_list.rs:109:58:
range end index 6 out of range for slice of length 5
---------------------------------------------------------------------------
PanicException Traceback (most recent call last)
Cell In[828], line 3
1 pl.DataFrame({
2 't_idx': [1 ,2 ,3, 4, 5, 6],
----> 3 }).rolling('t_idx', period='5i').agg(
4 -pl.col('t_idx').len().cast(pl.Int64).alias('start'),
5 pl.col('t_idx').count().alias('end'),
6 pl.lit(pl.Series([.1, .2, .3, .4, .5])).slice(-pl.col('t_idx').len().cast(pl.Int64), pl.col('t_idx').count()).alias('new')
7 )
File ~/virtual_environments/vve_3_11_6/lib/python3.11/site-packages/polars/dataframe/group_by.py:896, in RollingGroupBy.agg(self, *aggs, **named_aggs)
868 def agg(
869 self,
870 *aggs: IntoExpr | Iterable[IntoExpr],
871 **named_aggs: IntoExpr,
872 ) -> DataFrame:
873 """
874 Compute aggregations for each group of a group by operation.
875
(...)
884 The resulting columns will be renamed to the keyword used.
885 """
886 return (
887 self.df.lazy()
888 .rolling(
889 index_column=self.time_column,
890 period=self.period,
891 offset=self.offset,
892 closed=self.closed,
893 group_by=self.group_by,
894 )
895 .agg(*aggs, **named_aggs)
--> 896 .collect(no_optimization=True)
897 )
File ~/virtual_environments/vve_3_11_6/lib/python3.11/site-packages/polars/lazyframe/frame.py:1967, in LazyFrame.collect(self, type_coercion, predicate_pushdown, projection_pushdown, simplify_expression, slice_pushdown, comm_subplan_elim, comm_subexpr_elim, cluster_with_columns, no_optimization, streaming, background, _eager, **_kwargs)
1964 # Only for testing purposes atm.
1965 callback = _kwargs.get("post_opt_callback")
-> 1967 return wrap_df(ldf.collect(callback))
PanicException: range end index 6 out of range for slice of length 5
Ich habe versucht, das Slicing ohne rollierendes Fenster durchzuführen, und es war in Ordnung, selbst wenn length=6 größer als die Länge der Serie ist:
Ich habe versucht, eine Gewichtsreihe basierend auf der Länge des Rollfensters aufzuteilen. Anwendungsfälle können z.B. sein Wir möchten einige benutzerdefinierte Gewichte für den gleitenden Durchschnitt anwenden. (Soweit ich weiß, ist bereits ein Rolling_Mean implementiert.) Könnte mir jemand erklären, warum ich den folgenden Fehler habe und wie ich das, was ich oben beschrieben habe, am besten erreichen kann? Danke! Nehmen wir an, mein rollierendes Fenster hat eine Länge von 5. Die ersten 4 Zeilen haben eine Länge von 1, 2, 3, 4 und deshalb möchte ich nur die ersten paar Gewichte erhalten. Ab der fünften Zeile erwarte ich, dass die Gewichtungen immer [.1, .2, .3, .4, .5] betragen. Der folgende Code funktioniert irgendwie, aber nicht wirklich (wie ich [0.5], [0.4, 0.5], ..., [0.2, 0.3, 0.4, 0.5] für die ersten 4 Zeilen erwarte: [code]pl.DataFrame({ 't_idx': [1 ,2 ,3, 4, 5], }).rolling('t_idx', period='5i').agg( -pl.col('t_idx').len().cast(pl.Int64).alias('start'), pl.col('t_idx').count().alias('end'), pl.lit(pl.Series([.1, .2, .3, .4, .5])).slice(-pl.col('t_idx').len().cast(pl.Int64), pl.col('t_idx').count()).alias('weights') ) [/code] [code]shape: (5, 4) ┌───────┬───────┬─────┬───────────────────┐ │ t_idx ┆ start ┆ end ┆ new │ │ --- ┆ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ u32 ┆ list[f64] │ ╞═══════╪═══════╪═════╪═══════════════════╡ │ 1 ┆ -1 ┆ 1 ┆ [0.1] │ │ 2 ┆ -2 ┆ 2 ┆ [0.1, 0.2] │ │ 3 ┆ -3 ┆ 3 ┆ [0.1, 0.2, 0.3] │ │ 4 ┆ -4 ┆ 4 ┆ [0.1, 0.2, … 0.4] │ │ 5 ┆ -5 ┆ 5 ┆ [0.1, 0.2, … 0.5] │ └───────┴───────┴─────┴───────────────────┘ [/code] Sobald ich jedoch die Anzahl der Zeilen auf 6 erhöhe, erhalte ich eine Fehlermeldung, die ich nicht ganz verstehe. [code]pl.DataFrame({ 't_idx': [1 ,2 ,3, 4, 5, 6], }).rolling('t_idx', period='5i').agg( -pl.col('t_idx').len().cast(pl.Int64).alias('start'), pl.col('t_idx').count().alias('end'), pl.lit(pl.Series([.1, .2, .3, .4, .5])).slice(-pl.col('t_idx').len().cast(pl.Int64), pl.col('t_idx').count()).alias('weights') ) [/code] [code]thread 'polars-4' panicked at crates/polars-core/src/frame/group_by/aggregations/agg_list.rs:109:58: range end index 6 out of range for slice of length 5 --------------------------------------------------------------------------- PanicException Traceback (most recent call last) Cell In[828], line 3 1 pl.DataFrame({ 2 't_idx': [1 ,2 ,3, 4, 5, 6], ----> 3 }).rolling('t_idx', period='5i').agg( 4 -pl.col('t_idx').len().cast(pl.Int64).alias('start'), 5 pl.col('t_idx').count().alias('end'), 6 pl.lit(pl.Series([.1, .2, .3, .4, .5])).slice(-pl.col('t_idx').len().cast(pl.Int64), pl.col('t_idx').count()).alias('new') 7 )
File ~/virtual_environments/vve_3_11_6/lib/python3.11/site-packages/polars/dataframe/group_by.py:896, in RollingGroupBy.agg(self, *aggs, **named_aggs) 868 def agg( 869 self, 870 *aggs: IntoExpr | Iterable[IntoExpr], 871 **named_aggs: IntoExpr, 872 ) -> DataFrame: 873 """ 874 Compute aggregations for each group of a group by operation. 875 (...) 884 The resulting columns will be renamed to the keyword used. 885 """ 886 return ( 887 self.df.lazy() 888 .rolling( 889 index_column=self.time_column, 890 period=self.period, 891 offset=self.offset, 892 closed=self.closed, 893 group_by=self.group_by, 894 ) 895 .agg(*aggs, **named_aggs) --> 896 .collect(no_optimization=True) 897 )
PanicException: range end index 6 out of range for slice of length 5 [/code] Ich habe versucht, das Slicing ohne rollierendes Fenster durchzuführen, und es war in Ordnung, selbst wenn length=6 größer als die Länge der Serie ist: [code]pl.select( pl.lit(pl.Series([.1, .2, .3, .4, .5])).slice(-5, 6) ) [/code] [code]shape: (5, 1) ┌─────┐ │ │ │ --- │ │ f64 │ ╞═════╡ │ 0.1 │ │ 0.2 │ │ 0.3 │ │ 0.4 │ │ 0.5 │ └─────┘ [/code]
Ich habe ein Problem mit MongoDB mit CodeIgnitor 3 hinsichtlich der Gruppierung von Datensätzen nach dem Datumswert einer Spalte, die einen Datums-/Uhrzeitwert enthält.
Wenn ich die Mongo-Abfrage...
wird als Rolling -Array als inkrementelle Technologie angesehen oder nicht, und unter welcher Technologie wird es klassifiziert?
Ich dachte, es sei einer seiner Typen. Kann jemand die Idee erklären...
Zum Beispiel: Ich habe eine Reihe von Form, sagen und möchte den Mittelwert eines jeden Abschnitts finden und ein Array von Größe ausgeben? Wenn ich das tun kann, ohne durch das Array zu schieben,...
Wenn ich eine Liste von Dateien habe, l = mit den Größen S1, S2, ..., Sn und ich erstelle einen df mit df = pl.scan_csv (l, ...) oder df = pl.Scan_Parquet (l, l. d.h. ?