我有一个包含多个 ID 和对应状态的数据框。我想分析状态随时间的变化情况,并有效地呈现这些信息。
以下是一个例子:
import polars as pl
df = pl.DataFrame({
"ID": [1, 2, 3],
"T0": ["A", "B", "C"],
"T1": ["B", "B", "A"],
})
一种方法是“连接”列,然后执行value_counts()
更改列
df = df.with_columns(
(pl.col("T0") + " -> " + pl.col("T1")).alias("Change")
)
但是,可能有更好的方法,甚至有一个内置函数可以更有效地实现我的需要。
电流输出:
shape: (3, 4)
┌─────┬─────┬─────┬────────┐
│ ID ┆ T0 ┆ T1 ┆ Change │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ str ┆ str │
╞═════╪═════╪═════╪════════╡
│ 1 ┆ A ┆ B ┆ A -> B │
│ 2 ┆ B ┆ B ┆ B -> B │
│ 3 ┆ C ┆ A ┆ C -> A │
└─────┴─────┴─────┴────────┘
shape: (3, 2)
┌────────┬───────┐
│ Change ┆ count │
│ --- ┆ --- │
│ str ┆ u32 │
╞════════╪═══════╡
│ C -> A ┆ 1 │
│ B -> B ┆ 1 │
│ A -> B ┆ 1 │
└────────┴───────┘