以下功能未正确实现。 如果框架的索引具有重复的值,则结果将包含超过n
行且未正确排序的结果。 因此,在这种特殊情况下,DataFrame的nsmallest
和nlargest
不会返回正确的帧。
def _nsorted(self, columns, n, method, keep):
if not com.is_list_like(columns):
columns = [columns]
columns = list(columns)
ser = getattr(self[columns[0]], method)(n, keep=keep)
ascending = dict(nlargest=False, nsmallest=True)[method]
return self.loc[ser.index].sort_values(columns, ascending=ascending,
kind='mergesort')
的确:
In [71]: df = pd.DataFrame({'a':[1,2,3,4], 'b':[4,3,2,1]}, index=[0,0,1,1])
In [72]: df.nlargest(1, 'a')
Out[72]:
a b
1 4 1
1 3 2
In [73]: df.nlargest(2, 'a')
Out[73]:
a b
1 4 1
1 4 1
1 3 2
1 3 2
( @ Tux1旁注以供将来参考,在打开问题时总是提供一个可重现的小示例总是很好的)
有兴趣做一个公关来解决这个问题?
是的,我会尽快解决
对不起,例子
2016年6月9日à23:30,Joris Van den Bossche [email protected] aécrit:
的确:
在[71]中:df = pd.DataFrame({'a':[1,2,3,4],'b':[4,3,2,1]},index = [0,0,1, 1])
在[72]中:df.nlargest(1,'a')
出[72]:
b
1 4 1
1 3 2在[73]中:df.nlargest(2,'a')
出[73]:
b
1 4 1
1 4 1
1 3 2
1 3 2
( @ Tux1旁注以供将来参考,在打开问题时总是提供一个可重现的小示例总是很好的)
有兴趣做一个公关来解决这个问题?-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看,或使该线程静音。
我的修复方法不是很好,但是我看不到任何其他解决方案来处理MultiIndex和重复值索引
在.19.2中,Sum似乎可以正常工作,但是按计数,这似乎没有任何意义。 df重复次数是“ n”的次数。 那是一个错误还是我做错了什么?
df.groupby(['a']).agg({'b':'count'}).nlargest(2, 'b')
b
a
1 1
2 1
3 1
4 1
1 1
2 1
3 1
4 1
@shankararul参见: https :
最有用的评论
@shankararul参见: https :