在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 中的每一列中的空值,而不循环通过每一列?
1条答案
按热度按时间ggazkfy81#
假设您没有使用输出格式,那么惯用的方法是...
但是如果你真的喜欢dict输出,你可以很容易地得到它。
其工作方式是,在
select
中,我们从pl.all()
开始,这意味着所有的列,然后,就像在pandas版本中一样,我们应用is_null
,它将返回True/False。从那里我们链接sum
,它将True变成1,并给出每列中的null数量。还有专用的
null_count()
,所以你不必链is_null().sum()
感谢@jqurious的提示。