Вот упрощенный пример моих данных.
Код: Выделить всё
import polars as pl
df = pl.from_repr("""
┌──────────┬───────┬────────────┬────────────┬────────────────────┐
│ name ┆ truth ┆ prediction ┆ confidence ┆ correct_prediction │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 ┆ f64 ┆ i32 │
╞══════════╪═══════╪════════════╪════════════╪════════════════════╡
│ Alice ┆ 1 ┆ 1 ┆ 0.343474 ┆ 1 │
│ Bob ┆ 0 ┆ 1 ┆ 0.298461 ┆ 0 │
│ Caroline ┆ 1 ┆ 1 ┆ 0.420634 ┆ 1 │
│ Dutch ┆ 0 ┆ 0 ┆ 0.125515 ┆ 1 │
│ Emily ┆ 1 ┆ 0 ┆ 0.772971 ┆ 0 │
│ Frank ┆ 0 ┆ 1 ┆ 0.646964 ┆ 0 │
│ Gerald ┆ 0 ┆ 0 ┆ 0.833705 ┆ 1 │
│ Henry ┆ 1 ┆ 1 ┆ 0.837181 ┆ 1 │
│ Isabelle ┆ 1 ┆ 1 ┆ 0.790773 ┆ 1 │
│ Jack ┆ 0 ┆ 0 ┆ 0.144983 ┆ 1 │
└──────────┴───────┴────────────┴────────────┴────────────────────┘
""")
Код: Выделить всё
expected = pl.from_repr("""
┌──────────┬───────┬────────────┬────────────┬────────────────────┐
│ name ┆ truth ┆ prediction ┆ confidence ┆ correct_prediction │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 ┆ f64 ┆ i64 │
╞══════════╪═══════╪════════════╪════════════╪════════════════════╡
│ Emily ┆ 1 ┆ 0 ┆ 0.772971 ┆ 0 │
│ Frank ┆ 0 ┆ 1 ┆ 0.646964 ┆ 0 │
│ Bob ┆ 0 ┆ 1 ┆ 0.298461 ┆ 0 │
│ Dutch ┆ 0 ┆ 0 ┆ 0.125515 ┆ 1 │
│ Jack ┆ 0 ┆ 0 ┆ 0.144983 ┆ 1 │
│ Alice ┆ 1 ┆ 1 ┆ 0.343474 ┆ 1 │
│ Caroline ┆ 1 ┆ 1 ┆ 0.420634 ┆ 1 │
│ Isabelle ┆ 1 ┆ 1 ┆ 0.790773 ┆ 1 │
│ Gerald ┆ 0 ┆ 0 ┆ 0.833705 ┆ 1 │
│ Henry ┆ 1 ┆ 1 ┆ 0.837181 ┆ 1 │
└──────────┴───────┴────────────┴────────────┴────────────────────┘
""")
Я знаю, что могу разделить DataFrame на корректные_предсказания и некорректные_предсказания, использовать для каждого из них разную логику сортировки, а затем снова объединить их вместе concat(). Я ищу что-то более элегантное и менее беспорядочное.
Подробнее здесь: https://stackoverflow.com/questions/777 ... -in-polars
Мобильная версия