针对一个列中的每个项目,统计另一个指定列中不同项目的数量 - Pandas

3
在给定的Pandas数据框中,我需要计算列y中每个x列项目的唯一项数。我想到了使用字典进行计数的方法,但它们似乎无法正常工作。以下是我想要处理的示例:
df = pd.DataFrame([[a, 2], [a, 1], [c, 4], [a, 1], [c, 4]]), columns=list('AB'))

生成如下数据框:

   A  B
0  a  2
1  a  1
2  c  4
3  a  1
4  c  4

现在我想要的输出应该是:
a:2
c:1
2个回答

3
你需要使用 groupby SeriesGroupBy.nunique ,最后使用to_dict
print (df.groupby('A').B.nunique())
A
a    2
c    1
Name: B, dtype: int64

print (df.groupby('A').B.nunique().to_dict())
{'a': 2, 'c': 1}

@piRSquared - 是的,这也很好。顺便问一下,你怎么样?忙吗? - jezrael
我认为pandas越来越受欢迎了,很多新的答案也随之而来,这非常棒 ;) - jezrael
我认为这很棒!我希望我们所做的能够促使更多的人对此感到兴奋。你已经回答了比其他任何人都要多的熊猫问题。只有你和EdChum回答的比我多。 - piRSquared

1
使用 drop_duplicates 查找唯一值。然后使用 value_counts
df.drop_duplicates().A.value_counts()

a    2
c    1
Name: A, dtype: int64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接