Ranking zwei Listenspalten in Polaren basierend auf Elementen in der ersten Liste, dann der zweitenPython

Python-Programme
Anonymous
 Ranking zwei Listenspalten in Polaren basierend auf Elementen in der ersten Liste, dann der zweiten

Post by Anonymous »

Aufgrund bestimmter Einschränkungen beträgt die Polars -Version 0,18.4 < /p>
Ein Datenframe: < /p>

Code: Select all

df = pl.DataFrame({
"column_id": [1,2,3],
"column1": [[1,2,1],[2,2,2],[0,0,1]],
"column2": [[0,0,0],[0,1,2],[0,2,1]]
})
< /code>
Ich möchte sowohl Spalte 1 als auch 2 nach Spalte1 sortieren und dann nach Spalte sortieren, wenn Spalte 1 eine Krawatte hat.df_ranked = df.with_columns(
rank=pl.col('column1').list.eval( pl.element().rank(method="ordinal", descending=True) )
)

explode_col = ['column1','column2','rank']
rank = df_ranked['rank']

df_full_rank = (df_ranked.explode(explode_col)
.select( pl.all().sort_by('rank').over('column_id') )
.group_by('column_id', maintain_order=True).agg(pl.col(explode_col))
.with_columns(rank=rank)
)
< /code>
Ausgabe: < /p>
┌───────────┬───────────┬───────────┬───────────┐
│ column_id ┆ column1   ┆ column2   ┆ rank      │
│ ---       ┆ ---       ┆ ---       ┆ ---       │
│ i64       ┆ list[i64] ┆ list[i64] ┆ list[u32] │
╞═══════════╪═══════════╪═══════════╪═══════════╡
│ 1         ┆ [2, 1, 1] ┆ [0, 0, 0] ┆ [2, 1, 3] │
│ 2         ┆ [2, 2, 2] ┆ [0, 1, 2] ┆ [1, 2, 3] │
│ 3         ┆ [1, 0, 0] ┆ [1, 0, 2] ┆ [2, 3, 1] │
└───────────┴───────────┴───────────┴───────────┘
Dies ist jedoch unzureichend, da die Werte in Spalte2 bei einem Unentschieden nicht berücksichtigt werden. Eine ähnliche Logik gilt für die 3. Zeile.

Code: Select all

┌───────────┬───────────┬───────────┬───────────┐
│ column_id ┆ column1   ┆ column2   ┆ rank      │
│ ---       ┆ ---       ┆ ---       ┆ ---       │
│ i64       ┆ list[i64] ┆ list[i64] ┆ list[u32] │
╞═══════════╪═══════════╪═══════════╪═══════════╡
│ 1         ┆ [2, 1, 1] ┆ [0, 0, 0] ┆ [2, 1, 3] │
│ 2         ┆ [2, 2, 2] ┆ [2, 1, 0] ┆ [3, 2, 1] │
│ 3         ┆ [1, 0, 0] ┆ [1, 2, 0] ┆ [3, 2, 1] │
└───────────┴───────────┴───────────┴───────────┘

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post