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()必须分块完成才能进行聚合。
有没有办法找到没有。极地数据帧中每一列中的空值而不循环遍历每一列?
假设您不熟悉输出格式,惯用的方法是......
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 的提示。