熊猫:每个索引的子组数

时间:2017-01-15 20:31:38

标签: pandas

我有一个索引为index1且值为val1val2的数据框。我正在尝试为每个val1返回唯一index1值的计数。

数据帧:

df = pd.DataFrame(columns=['index1', 'val1', 'val2'], data=[['A', 1, 1], ['A', 1, 1], ['A', 2, 1]])

df = df.set_index(['index1'])

我这样分组

groupby = df.groupby([df.index, 'val1']) 

然后,我调用size(),返回

    index1  val1
    A       1       2
            2       1
    dtype: int64

这将返回每个组的计数。我正在寻找每个index1值具有的组数。 I.e A有2个独特的组。

2 个答案:

答案 0 :(得分:1)

如果您想要每列的唯一商品总数,您可以执行以下操作

000000000000000

答案 1 :(得分:0)

如果需要在每个组的某些列中计算唯一值,我认为您需要SeriesGroupBy.nunique

df1 = df.groupby(level=0)['val1'].nunique() 
print (df1)
index1
A    2
Name: val1, dtype: int64
df1 = df.groupby(level=0)['val1'].nunique().reset_index().rename(columns={'val1':'uniq'})
print (df1)
  index1  uniq
0      A     2

如果需要计算所有列中的唯一值,请agg使用nunique

df1 = df.groupby(level=0).agg(lambda x: x.nunique())
print (df1)
        val1  val2
index1            
A          2     1