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

时间:2017-06-29 10:18:58

标签: python pandas dataframe series

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

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

答案 1 :(得分:0)

如果您想了解所有价值观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()