Pandas: BUG: in _nsorted للإطار مع فهرس القيم المكررة

تم إنشاؤها على ٩ يونيو ٢٠١٦  ·  5تعليقات  ·  مصدر: pandas-dev/pandas

تم تنفيذ الوظيفة أدناه بشكل غير صحيح. إذا كان الإطار يحتوي على فهرس بقيم مكررة ، فستحصل على نتيجة بأكثر من n الصفوف ولم يتم فرزها بشكل صحيح. لذلك لا يُرجع nsmallest و nlargest لـ DataFrame إطارًا صحيحًا في هذه الحالة بالذات.

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')
Bug

التعليق الأكثر فائدة

ال 5 كومينتر

بالفعل:

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

( @ ملاحظة جانبية
هل أنت مهتم بعمل العلاقات العامة لإصلاح هذا؟

نعم سوف أصلح ذلك قريبا
آسف على سبيل المثال

Le 9 juin 2016 à 23:30، Joris Van den Bossche [email protected] écrit:

بالفعل:

في [71]: df = pd.DataFrame ({'a': [1،2،3،4]، 'b': [4،3،2،1]} ، الفهرس = [0،0،1 ، 1])

في [72]: df.nlargest (1، "a")
الخارج [72]:
أب
1 4 1
1 3 2

في [73]: df.nlargest (2، "a")
الخارج [73]:
أب
1 4 1
1 4 1
1 3 2
1 3 2
( @ ملاحظة جانبية
هل أنت مهتم بعمل العلاقات العامة لإصلاح هذا؟

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

الإصلاح الذي أجريته ليس أنيقًا للغاية ولكني لا أرى أي حل آخر للتعامل مع مؤشر القيمة المتعددة ومؤشر القيمة المكررة

يبدو أن Sum يعمل بشكل جيد في .19.2 ولكن مع العد ، لا يبدو أنه منطقي. يتكرر 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
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات