Pandas Pivot表计数值(不包括“NaN”)

时间:2016-05-14 02:24:10

标签: python-3.x pandas pivot-table

给出以下数据框:

import numpy as np
import pandas as pd
df = pd.DataFrame({'Site':['a','a','a','b','b','b'],
                   'x':[1,1,0,1,np.nan,0],
                   'y':[1,np.nan,0,1,1,0]
                   })

df

    Site    y   x
0   a      1.0  1
1   a      NaN  1
2   a      0.0  0
3   b      1.0  1
4   b      1.0  NaN
5   b      0.0  0

我想调整此数据框以获取每列的值计数(不包括“NaN”)。

我尝试过在其他帖子中找到的内容,但似乎没有任何效果(也许pandas 0.18有变化)?

期望的结果:

    Item  count 
Site            
a   y     2     
b   y     3     
a   x     3     
b   x     2

提前致谢!

1 个答案:

答案 0 :(得分:1)

pvt = pd.pivot_table(df, index = "Site", values = ["x", "y"], aggfunc = "count").stack().reset_index(level = 1)
pvt.columns = ["Item", "count"]

pvt
Out[38]: 
     Item  count
Site            
a       x      3
a       y      2
b       x      2
b       y      3

如果您希望首先出现,可以添加pvt.sort_values("Item", ascending = False)