我在数据集中有两列:
1)Supplier_code
2)Item_code
我使用以下方式对它们进行分组:
data.groupby(['supplier_code', 'item_code']).size()
我得到的结果如下:
supplier_code item_code
591495 127018419 9
547173046 1
3024466 498370473 1
737511044 1
941755892 1
6155238 875189969 1
13672569 53152664 1
430351453 1
573603000 1
634275342 1
18510135 362522958 6
405196476 6
441901484 12
29222428 979575973 1
31381089 28119319 2
468441742 3
648079349 18
941387936 1
我的前15家供应商使用:
supCounter = collections.Counter(datalist[3])
supDic = dict(sorted(supCounter.iteritems(), key=operator.itemgetter(1), reverse=True)[:15])
print supDic.keys()
这是我的前15名供应商名单:
[723223131, 687164888, 594473706, 332379250, 203288669, 604236177,
533512754, 503134099, 982883317, 147405879, 151212120, 737780569, 561901243,
786265866, 79886783]
现在我想加入这两个,即groupby,只获得前15名供应商和项目计数。
请帮助我解决这个问题。
答案 0 :(得分:2)
IIUC,您可groupby
supplier_code
,然后sum
和sort_values
。进入前15名,你就完成了。
例如,使用:
gb_size = data.groupby(['supplier_code', 'item_code']).size()
然后:
N = 3 # change to 15 for actual data
gb_size.groupby("supplier_code").sum().sort_values(ascending=False).head(N)
输出:
supplier_code
31381089 24
18510135 24
591495 10
dtype: int64