web-dev-qa-db-fra.com

AttributeError: impossible d'accéder à l'attribut appelable 'reset_index' des objets 'DataFrameGroupBy', essayez d'utiliser la méthode 'apply'

Je suis très nouveau à pandas et j'essaie d'utiliser groupby. J'ai un df avec plusieurs colonnes.

  • Je souhaite regrouper une colonne particulière, puis trier chaque groupe en fonction d'une colonne différente.
  • Je veux grouper col1, puis triez chaque groupe par col5 puis faites reset_index pour obtenir toutes les lignes de la trame de données.
  • J'obtiens l'erreur suivante AttributeError: Cannot access callable attribute 'reset_index' of 'DataFrameGroupBy' objects, try using the 'apply' method.

Mon cadre de données d'entrée:

col1 |  col2 | col3 | col4 | col5
=================================
A    |   A1   | A2   | A3   | DATE1
A    |   B1   | B2   | B3   | DATE2

Mon code:

df.sort_values(['col5'],ascending=False).groupby('col1').reset_index()
5
Gingerbread

vous pouvez utiliser

grouped = df.sort_values(['col5'],ascending=False).groupby('col1',as_index = False).apply(lambda x: x.reset_index(drop = True))
grouped.reset_index().drop(['level_0','level_1'],axis = 1)

Reportez-vous à ce lien stackoverflow pour une explication claire avec un exemple Comment réinitialiser les index d'un DataFrame pour tous les groupes en une seule étape?

1

Vous pouvez essayer le code ci-dessous, j'ai eu un problème similaire.

grouped=data.groupby(['Colname'])
grouped.apply(lambda _df: _df.sort_values(by=['col_to_be_sorted']))

0
hakuna_code