对熊猫来说很陌生,所以我在这里可能遗漏了一些明显的东西。我的意图是简单地按工作列出顶级项目,按类型分组。这里是我正在使用的CSV作为输入:
project,effort,type
p1,6,feature
p2,4.5,feature
p3,4.375,bug
p4,4,bug
p5,3.875,bug
p6,3.5,upgrade
p7,3.5,feature
p8,3,upgrade
p9,2,upgrade
现在,我的意图是显示前3个项目的努力,按类型分组。我就是这么做的:
dev=pd.read_csv('test.csv')
dev.sort_values(['effort'], ascending=False).groupby('type').head(3)
这就是我在ipython看到的:
project effort type
0 p1 6.000 feature
1 p2 4.500 feature
2 p3 4.375 bug
3 p4 4.000 bug
4 p5 3.875 bug
5 p6 3.500 upgrade
6 p7 3.500 feature
7 p8 3.000 upgrade
8 p9 2.000 upgrade
虽然这些行看起来很准确,但我希望输出的特性、bug和升级都被分组在一起,即使这意味着这些工作没有严格按照降序排序,比如:
期望值:
project effort type
0 p1 6.000 feature
1 p2 4.500 feature
6 p7 3.500 feature
2 p3 4.375 bug
3 p4 4.000 bug
4 p5 3.875 bug
5 p6 3.500 upgrade
7 p8 3.000 upgrade
8 p9 2.000 upgrade
也就是说,所有的特性,然后是bug,然后是升级(不需要按相同的顺序,但至少按正确的顺序分组)。你知道吗
我是不是漏掉了什么明显的东西?提前感谢您的回复!你知道吗
在提供的示例数据集中,每个项目都是具有特定类型的单个记录。在这种情况下,我们可以通过
nlargest
和groupby
类型和sum
努力获得前3个项目:输出:
顺便说一句,我来解释一下你的问题
当您在} ),因此“feature”、“bug”和“upgrade”中的每一个元素都会排在前3位。如果在
GroupBy
对象上使用head
时,它会为每个组获取第一个元素(参见文档中的^{groupby
之前应用head
,它将正常工作:它基本上与我上面的解决方案相同,唯一的区别是我使用了
nlargest
,而不是在后面排序和应用head
(nlargest
更简洁)更新:您可以按类型(升序)和工作量(降序)+
groupby
和head
预先排序:输出:
显然,在} 中有一个公开的问题
pandas
讨论的^{更新:
首先
sort
根据effort
。groupby
在type
中,服用head
,然后再次服用sort
和type
。你知道吗head(3)
至少是每个组的大小,因此打印整个DataFrame
。你知道吗产生
但是MCVE代码只显示了
Grouper
的用法。像mean()
这样的函数会更有用。你知道吗相关问题 更多 >
编程相关推荐