我有一个导入的.CSV数字值-我想对收件箱进行排序,这样我最终会得到一个列表,显示每个值在整个收件箱中出现的次数.

例如

1: 5
2: 0
3: 23
4: 8

我已经找到了如何计算指定列的值,但我找不到一种方法来对整个收件箱做同样的事情-我可以计算每列的值,然后然后将它们组合起来,但它有点笨重,我正在寻找一个更优雅的解决方案.

这是我正在try 的一个例子:

sort_dataframe = df.select(pl.col("1", "2", "3", "4", "5", "6", "7").value_counts())

结果是:

polars.exceptions.ComputeError: Series length 16 doesn't match the DataFrame height of 26

推荐答案

TLDR.将打印机取消旋转为长格式后可以使用value_counts.

df.melt().get_column("value").value_counts()

解释

让我们考虑下面的例子,即 pyramid .

import polars as pl

df = pl.DataFrame({
    "col_1": [1, 2, 3],
    "col_2": [2, 3, 7],
    "col_3": [1, 1, 9],
})
shape: (3, 3)
┌───────┬───────┬───────┐
│ col_1 ┆ col_2 ┆ col_3 │
│ ---   ┆ ---   ┆ ---   │
│ i64   ┆ i64   ┆ i64   │
╞═══════╪═══════╪═══════╡
│ 1     ┆ 2     ┆ 1     │
│ 2     ┆ 3     ┆ 1     │
│ 3     ┆ 7     ┆ 9     │
└───────┴───────┴───────┘

首先,我们可以使用pl.DataFrame.melt来取消透视框架,以获得包含所有值的单个列.

df.melt()
shape: (9, 2)
┌──────────┬───────┐
│ variable ┆ value │
│ ---      ┆ ---   │
│ str      ┆ i64   │
╞══════════╪═══════╡
│ col_1    ┆ 1     │
│ col_1    ┆ 2     │
│ col_1    ┆ 3     │
│ col_2    ┆ 2     │
│ col_2    ┆ 3     │
│ col_2    ┆ 7     │
│ col_3    ┆ 1     │
│ col_3    ┆ 1     │
│ col_3    ┆ 9     │
└──────────┴───────┘

最后,我们可以将value列作为pl.Series,并使用pl.Series.value_counts来计算每个值的出现次数.

counts = df.melt().get_column("value").value_counts()
shape: (5, 2)
┌───────┬───────┐
│ value ┆ count │
│ ---   ┆ ---   │
│ i64   ┆ u32   │
╞═══════╪═══════╡
│ 7     ┆ 1     │
│ 3     ┆ 2     │
│ 9     ┆ 1     │
│ 2     ┆ 2     │
│ 1     ┆ 3     │
└───────┴───────┘

这也可以简单地转换为Python字典.

dict(counts.iter_rows())
{3: 2, 7: 1, 1: 3, 2: 2, 9: 1}

Python相关问答推荐

在使用Guouti包的Python中运行MPP模型时内存不足

Python -Polars库中的滚动索引?

在Python中为变量的缺失值创建虚拟值

无法使用equals_html从网址获取全文

使用新的类型语法正确注释ParamSecdecorator (3.12)

时间序列分解

试图找到Python方法来部分填充numpy数组

将整组数组拆分为最小值与最大值之和的子数组

如何列举Pandigital Prime Set

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

CommandeError:模块numba没有属性generated_jit''''

从Windows Python脚本在WSL上运行Linux应用程序

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

ConversationalRetrivalChain引发键错误

pandas:在操作pandora之后将pandora列转换为int

mdates定位器在图表中显示不存在的时间间隔

解决Geopandas和Altair中的正图和投影问题

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

如果不使用. to_list()[0],我如何从一个pandas DataFrame中获取一个值?

如何提高Pandas DataFrame中随机列 Select 和分配的效率?