创建列的结构
c2
,
c3
使用
pl.struct("c2", "c3")
,计算稠密秩
c1
,然后减去1,因为默认情况下排名从1开始:
pl.struct("c2", "c3").rank("dense").over("c1") - 1
完整代码:
import polars as pl
df = pl.DataFrame(
{
"c1": ["a", "a", "a", "a", "d", "d"],
"c2": ["a", "a", "b", "c", "a", "b"],
"c3": [1, 1, 1, 1, 1, 1],
}
)
df2 = df.with_columns(rank=pl.struct("c2", "c3").rank("dense").over("c1") - 1)
print(df2)
输出
âââââââ¬ââââââ¬ââââââ¬âââââââ
â c1 â c2 â c3 â rank â
â --- â --- â --- â --- â
â str â str â i64 â u32 â
âââââââªââââââªââââââªâââââââ¡
â a â a â 1 â 0 â
â a â a â 1 â 0 â
â a â b â 1 â 1 â
â a â c â 1 â 2 â
â d â a â 1 â 0 â
â d â b â 1 â 1 â
âââââââ´ââââââ´ââââââ´âââââââ