我有一个索引为index1
且值为val1
和val2
的数据框。我正在尝试为每个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个独特的组。
答案 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