大熊猫,计算分组值(即多重计数)

时间:2018-04-09 02:18:18

标签: python pandas

我有一个表格的数据集:

r= pd.DataFrame({
    'id': [1, 1, 2, 2, 3],
    'value': [4.0, 5.5, 6.0, 4.0, 5],
    'label': ["A", "A", "B", "B", "A"],
})

请注意,每个id都可以重复,同一label可以应用于不同的id。 我想要计算我有多少不同的标签,但不要重复计算具有相同ID的标签。所以在这种情况下输出将是

>>> r.something()
{"A": 2, "B": 1}

这就是我的结果,但似乎有一种我没有看到的更容易的方法。

rr = r.groupby('id').agg({"label": lambda x: x.values[0]}).reset_index()

这会产生类型<{p>的DataFrame

    id  label   value
0   1   A       4.0
1   1   A       5.5
然后我可以做通常的计数

rr.groupby('label').size()

2 个答案:

答案 0 :(得分:2)

groupbynunique

r.groupby('label')['id'].nunique()

#label
#A    2
#B    1
#Name: id, dtype: int64

答案 1 :(得分:2)

这将产生你需要的东西

r.drop_duplicates(['id','label']).label.value_counts()
Out[118]: 
A    2
B    1
Name: label, dtype: int64