pandas 数据框:如何在数据框的所有列(数字和非数字)中找到特定值的计数(比如 'Unavailable')

pandas Dataframe: How do I find the count of specific value (say 'Unavailable') across all columns (numeric and non numeric) of the dataframe

假设我使用 df.fillna('Unavailable') 将数据框中的所有空值替换为字符串 ('Unavailable')。我现在需要仔细检查 'Unavailable' 的计数是否与空值的计数相匹配。有很多列和行,所以我不想指定列名等。 有没有办法在不使用 for 循环的情况下找到所有列中所有 'Unavailable' 的计数? 如果使用循环遍历所有列,当列包含数字类型时我会遇到问题。 执行 value_count 没有意义,因为我只想知道 'Unavailable' 计数而不是所有值的计数。 更重要的是,我觉得应该有一种简单的方法来做我可能会错过的事情。

你或许可以这样做:

(df.astype(str)=='Unavailable').values.sum()

如果您想概览所有价值观,pd.melt()pd.groupby() 可能会帮助您探索数据

例如:

foo                 bar             foobar
0   Unavailable     asd             asd
1   asd             Unavailable     asd
2   asd             Unavailable     asd
3   asd             Unavailable     asd
4   Unavailable     asd             asd
5   asd             asd             asd
6   Unavailable     asd             Unavailable
7   asd             asd             Unavailable
8   asd             asd             asd

熔化并分组 df

df_1 = pd.melt(df, value_vars=['foo ', 'bar ', 'foobar']).groupby("value").count()