这段代码:
df2 = (
pd.DataFrame({
'X' : ['X1', 'X1', 'X1', 'X1'],
'Y' : ['Y2', 'Y1', 'Y1', 'Y1'],
'Z' : ['Z3', 'Z1', 'Z1', 'Z2']
})
)
g = df2.groupby('X')
pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')
返回以下错误:
Traceback (most recent call last): ...
AttributeError: 'Index' object has no attribute 'index'
如何获得一个透视表,其中一个DataFrame列的唯一值的计数为另外两个列?
是否有用于唯一计数的aggfunc
?我应该使用np.bincount()
吗
注意:我知道pandas.Series.values_counts()
,但是我需要一个数据透视表。
编辑:输出应为:
Z Z1 Z2 Z3
Y
Y1 1 1 NaN
Y2 NaN NaN 1
发布于 2012-10-12 23:19:00
你是说像这样的东西吗?
>>> df2.pivot_table(values='X', index='Y', columns='Z', aggfunc=lambda x: len(x.unique()))
Z Z1 Z2 Z3
Y
Y1 1 1 NaN
Y2 NaN NaN 1
请注意,使用len
假设您的DataFrame中没有NA
。否则,您可以使用x.value_counts().count()
或len(x.dropna().unique())
。
发布于 2013-10-28 16:48:01
这是对.pivot_table
中的条目进行计数的好方法
>>> df2.pivot_table(values='X', index=['Y','Z'], columns='X', aggfunc='count')
X1 X2
Y Z
Y1 Z1 1 1
Z2 1 NaN
Y2 Z3 1 NaN
发布于 2018-07-17 01:45:37
由于pandas的最低版本为0.16,因此它不接受参数“row”
从0.23开始,解决方案是:
df2.pivot_table(values='X', index='Y', columns='Z', aggfunc=pd.Series.nunique)
它返回:
Z Z1 Z2 Z3
Y
Y1 1.0 1.0 NaN
Y2 NaN NaN 1.0
https://stackoverflow.com/questions/12860421
复制相似问题