pandas 如何找到不,在polars Dataframe 中的每一列都有null值吗?

ie3xauqp  于 2023-05-12  发布在  其他
关注(0)|答案(1)|浏览(106)

在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())

[out]:

{'foo': 1, 'bar': 2}

在polars中,可以通过循环遍历列来完成相同的操作:

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}

在使用LazyFrame时,循环遍历polars中的列特别痛苦,然后.collect()必须分块完成以进行聚合。

有没有办法找到没有。在polars Dataframe 中的每一列中的空值,而不循环通过每一列?

ggazkfy8

ggazkfy81#

假设您没有使用输出格式,那么惯用的方法是...

df.select(pl.all().is_null().sum())

但是如果你真的喜欢dict输出,你可以很容易地得到它。

df.select(pl.all().is_null().sum()).to_dicts()[0]

其工作方式是,在select中,我们从pl.all()开始,这意味着所有的列,然后,就像在pandas版本中一样,我们应用is_null,它将返回True/False。从那里我们链接sum,它将True变成1,并给出每列中的null数量。
还有专用的null_count(),所以你不必链is_null().sum()感谢@jqurious的提示。

相关问题