Код: Выделить всё
import polars as pl
df = pl.from_repr("""
┌───────────────────┬──────────────┬────────┐
│ session_id ┆ elapsed_time ┆ fqid │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i32 ┆ cat │
╞═══════════════════╪══════════════╪════════╡
│ 20090312431273200 ┆ 0 ┆ intro │
│ 20090312431273200 ┆ 1323 ┆ gramps │
│ 20090312431273200 ┆ 831 ┆ gramps │
│ 20090312431273200 ┆ 1147 ┆ gramps │
│ 20090312431273200 ┆ 5197 ┆ teddy │
│ 20090312431273200 ┆ 6180 ┆ teddy │
│ 20090312431273200 ┆ 7014 ┆ teddy │
│ 20090312431273200 ┆ 7946 ┆ teddy │
└───────────────────┴──────────────┴────────┘
""")
Код: Выделить всё
┌───────────────────┬─────────────┬────────────┬────────────┐
│ session_id ┆ fqid_gramps ┆ fqid_intro ┆ fqid_teddy │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i32 ┆ i32 ┆ i32 │
╞═══════════════════╪═════════════╪════════════╪════════════╡
│ 20090312431273200 ┆ 1 ┆ 1 ┆ 4 │
└───────────────────┴─────────────┴────────────┴────────────┘
- Group_by по session_id,
- Создать value_counts() по fqid,
- Переименовать столбцы так, чтобы это было «fqid_» + категория,
- Превратить их в столбцы (транспонировать),
- Добавьте их к результату.
Код: Выделить всё
column_values = train['fqid'].value_counts().with_columns(pl.concat_str(pl.lit('fqid' + '_').alias('fqid'), pl.col('fqid').cast(pl.String))).transpose()
column_values = column_values.rename(column_values.head(1).to_dicts().pop()).slice(1)
Не могли бы вы подсказать, как правильно выполнить эту операцию?
Подробнее здесь: https://stackoverflow.com/questions/763 ... lue-counts