我有一个数据框,如下所示。
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'中存在的金额之和
答案 0 :(得分:3)
将DataFrameGroupBy.agg
与元组列表一起使用-第一个值指定新的列名和第二个聚合函数,此处为size
和nunique
:
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