如何创建交叉表?

问题描述 投票:0回答:1

我想计算两个 Polars 列中的独特组合。

在R

df <- data.frame(a = c(2,0,1,0,0,0), b = c(1,1,1,0,0,1))
table(df) 
    0 1
  0 2 2
  1 0 1
  2 0 1

在熊猫

import numpy as np
a = np.array([2,0,1,0,0,0])
b = np.array([1,1,1,0,0,1])
pd.crosstab(a, b)
    0   1       
0   2   2
1   0   1
2   0   1

在极地

这是正确的方法吗?

df = pl.DataFrame(
    {
        "a": [2,0,1,0,0,0],
        "b": [1,1,1,0,0,1]
    }
)
df.pivot(on="a", index="b", values="a", aggregate_function="len").fill_null(0)
python python-polars
1个回答
1
投票

我认为你想颠倒你的枢轴中的“a”和“b”。您还可以使用

sort_columns
参数以及末尾的
.sort
来获得相同的输出

df.pivot(on='b',index='a',values='b',aggregate_function='len',sort_columns=True).fill_null(0).sort('a')
shape: (3, 3)
┌─────┬─────┬─────┐
│ a   ┆ 0   ┆ 1   │
│ --- ┆ --- ┆ --- │
│ i64 ┆ u32 ┆ u32 │
╞═════╪═════╪═════╡
│ 0   ┆ 2   ┆ 2   │
│ 1   ┆ 0   ┆ 1   │
│ 2   ┆ 0   ┆ 1   │
└─────┴─────┴─────┘
© www.soinside.com 2019 - 2024. All rights reserved.