当一组pandas数据帧按一列显示“version”,其中有10个不同的版本。如何才能绘制出前3名(占90%以上)并将剩余的小部分放入一个“另一个”桶中。在
data = array([
('Top1', 14),
('Top1', 3),
('Top1', 2),
('Top2', 6),
('Top2', 7),
('Other1', 1),
('Other2', 2),
],
dtype=[('Version', 'S10'),('Value', '<i4')])
df = DataFrame.from_records(data)
df.groupby('Version').sum()
这将返回:
^{pr2}$我在找
Value
Version
Others
Top1 19
Top2 13
本例只选择了版本名Other*和Top*。在
当然,在分组并与阈值进行比较后,可以手动将类别设置为“其他”。我想找条捷径。在
我假设您还希望对
Other
组求和,对于您的示例,总共是3个?在如果我的目标是赢得熊猫一号线比赛,这将是我的参赛作品:
但这完全是不可读的,让我们把它分解一下:
您已经演示了如何对每个组求和,对结果进行排序并选择前2名之外的任何内容都可以使用:
^{pr2}$在本例中,}。在
not_top2
包含Other1
和{我们可以将这些
Versions
替换为一个通用名称:上面的内容将替换任何列中
not_top2
的内容。如果希望此值出现在Version
以外的任何列中,则需要一个小的子步骤。在剩下的就是重新进行原始分组:
它给出了:
相关问题 更多 >
编程相关推荐