【发布时间】:2016-05-14 02:24:10
【问题描述】:
给定以下数据框:
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
提前致谢!
【问题讨论】:
-
为什么需要支点?
df.count()会给你计数(不包括 nans)? -
因为我需要另一个函数的数据透视表(计算每列包含 1 的行的百分比)。
-
你能展示一下生成的数据透视表的样子吗?
-
当然;我已经更新了帖子。
-
我认为当函数在列表中传递时它会抱怨字符串。你可以试试
pvt = pd.pivot_table(df, index = "Site", values = ["x", "y"], aggfunc = [np.sum, lambda x: len(x.dropna())]).stack().reset_index(level = 1)。
标签: python-3.x pandas pivot-table