如何找到编号。极坐标数据框中每列的空值?

alv*_*vas 3 python null dataframe pandas python-polars

在 pandas 中,人们可以这样做:

import pandas as pd

d = {"foo":[1,2,3, None], "bar":[4,None, None, 6]}
df_pandas = pd.DataFrame.from_dict(d)
dict(df_pandas.isnull().sum())
Run Code Online (Sandbox Code Playgroud)

[出去]:

{'foo': 1, 'bar': 2}
Run Code Online (Sandbox Code Playgroud)

在极坐标中,可以通过循环列来执行相同的操作:

import polars as pl

d = {"foo":[1,2,3, None], "bar":[4,None, None, 6]}
df_polars = pl.from_dict(d)

{col:df_polars[col].is_null().sum() for col in df_polars.columns}
Run Code Online (Sandbox Code Playgroud)

使用 时,循环遍历极坐标中的列尤其痛苦LazyFrame,因此.collect()必须分块完成才能进行聚合。

有没有办法找到没有。极地数据帧中每一列中的空值而不循环遍历每一列?

Dea*_*gor 5

假设您不熟悉输出格式,惯用的方法是......

df.select(pl.all().is_null().sum())
Run Code Online (Sandbox Code Playgroud)

但是,如果您真的喜欢 dict 输出,您可以轻松获得它......

df.select(pl.all().is_null().sum()).to_dicts()[0]
Run Code Online (Sandbox Code Playgroud)

它的工作方式是,在select我们开始的时候pl.all(),这意味着所有的列,然后,就像在 pandas 版本中一样,我们应用is_null它将返回 True/False。由此我们将sumTrue 转换为 1 并给出每列中 null 的数量。

还有专用的null_count(),所以你不必链接is_null().sum()感谢@jqurious 的提示。

  • 还有一个专用的 [`.null_count`](https://pola-rs.github.io/polars/py-polars/html/reference/expressions/api/polars.Expr.null_count.html#polars.Expr.空计数) (5认同)