通过在每个 df 列上应用函数来创建系列

Create Series by applying function over every df column

给定一个 DataFrame,我想计算每列中 NaN 值的数量,以将比例显示为直方图。

我想到了

df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
nan_dict = {}
for col in df:
    nan_dict[col] = df[col].value_counts(dropna=False)[0]

然后根据字典构建直方图。这看起来真的很麻烦;此外,当没有 NaNs.

时它会失败

有没有一种方法可以在所有列中应用 value_counts,以便我返回一个 Series,每列具有 NaN 个值?

df = pd.DataFrame({"col1": [1, 2], "col2": [3, 4]})
print(dict(zip(df.columns, df.isna().sum())))

打印:

{'col1': 0, 'col2': 0}

对于数据框:

   col1  col2
0     1   3.0
1     2   NaN

打印:

{'col1': 0, 'col2': 1}