给出以下数据框:
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
提前致谢!
答案 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)
。