在Python中基于计数和唯一计数添加列

时间:2018-09-17 10:58:40

标签: python pandas

我有一个数据框,如下所示。

type item
new apple
new apple
new io
new io
old apple
old io
old io 
old se
old pj
etc el

我需要根据计数和唯一计数创建一个新的数据框

type    type_count  unique_item_count
new            4    2
old            5    4
etc            1    1

col'type_count'是基于col'type'中标签的频率 col'unique_item_count'基于col'type'中每个唯一标签的col'item'中存在的标签的唯一计数

如果我添加新列

type    item    val
new apple       20
new apple       6
new io          5
new io          6
old apple       5
old io          6
old io          4
old se          5
old pj          3
etc el          2

并希望使用一个新的数据框

type    type_count  unique_item_count   total_count
new             4                   2   37
old             5                   4   23
etc             1                   1   2

col'total_count'是每种类型的col'val'中存在的金额之和

1 个答案:

答案 0 :(得分:3)

DataFrameGroupBy.agg与元组列表一起使用-第一个值指定新的列名和第二个聚合函数,此处为sizenunique

L = [('type_count','size'), ('unique_item_count','nunique')]
df = df.groupby('type', sort=False)['item'].agg(L).reset_index()
print (df)
  type  type_count  unique_item_count
0  new           4                  2
1  old           5                  4
2  etc           1                  1