如何获取并显示每列的值计数

时间:2016-05-26 04:14:34

标签: python pandas dataframe

我有一个pandas数据帧。

DF:

   col1 col2 col3 col4 col5
0   1.0  1.0  NaN  NaN  1.0
1   NaN  1.0  1.0  2.0  1.0
2   2.0  NaN  1.0  NaN  1.0

我想得到每列具有相同数据的行数,如下所示。

输出:

    col1 col2 col3 col4 col5
1.0    1    2    2    0    3
2.0    1    0    0    1    0

或仅计算值。

    col1 col2 col3 col4 col5
1.0    1    2    2    0    3

有没有办法获得我预期的输出?

2 个答案:

答案 0 :(得分:0)

编辑 df.replace(np.NaN,0)在版本之间无法可靠地运行,因此更新为使用df.fillna(0)。

要计算每列中值的出现次数,请使用value_counts。非出现的值变为NaN,因此需要替换为0:

>>> df.apply(pd.value_counts).fillna(0)


   col1  col2  col3  col4  col5
1     1     2     2     0     3
2     1     0     0     1     0

要检索特定行:

>>> df.apply(pd.value_counts).fillna(0).loc[1:1]

   col1  col2  col3  col4  col5
1     1     2     2     0     3

答案 1 :(得分:0)

您可以使用value_counts pandas系列方法,然后fillna使用NaN填充0值:

In [7]: df
Out[7]:
   col1  col2  col3  col4  col5
0   1.0   1.0   NaN   NaN   1.0
1   NaN   1.0   1.0   2.0   1.0
2   2.0   NaN   1.0   NaN   1.0

In [8]: df.apply(lambda x: x.value_counts()).fillna(0)
Out[8]:
     col1  col2  col3  col4  col5
1.0     1   2.0   2.0   0.0   3.0
2.0     1   0.0   0.0   1.0   0.0

如果您需要int值而不是浮点数,那么您也可以将astypeint一起使用:

In [9]: df.apply(lambda x: x.value_counts()).fillna(0).astype(int)
Out[9]:
     col1  col2  col3  col4  col5
1.0     1     2     2     0     3
2.0     1     0     0     1     0