熊猫:如何汇总数据,groupby,unique

时间:2018-01-17 02:18:52

标签: python pandas

这是我正在使用的数据框:

company | pc-serial | software
--------+-----------+--------------------
A       | 1         | Word
A       | 1         | Excel
A       | 2         | Word
A       | 3         | PowerPoint
B       | 4         | Word
B       | 4         | Excel
B       | 4         | Visio
B       | 5         | Word
B       | 5         | PowerPoint

我想构建一个新的数据框,告诉我每个公司拥有的独特软件的数量,结果应该是这样的:

company | unique_sw
--------+--------------
A       | 3
B       | 4

A有3个(Word,Excel和PowerPoint),B有4个(Word,Excel,PowerPoint和Visio)

我试过df.groupby('company')['software'].count()它给了我A所有软件4的计数和B有5个。如果我改变count() unique()它会给我第一次出现“软件”。

所以我不知道如何聚合这个。

2 个答案:

答案 0 :(得分:3)

请改用:

df.groupby('company')['software'].nunique()

答案 1 :(得分:0)

df.groupby('company').software.apply(lambda x : len(set(x))).to_frame('uniquecount')
Out[687]: 
         uniquecount
company             
A                  3
B                  4

或者您可以按drop_duplicates

修复代码
df.drop_duplicates(['company','software']).groupby('company').software.count()
Out[690]: 
company
A    3
B    4
Name: software, dtype: int64