web-dev-qa-db-ja.com

AttributeError:「DataFrameGroupBy」オブジェクトの呼び出し可能な属性「reset_index」にアクセスできません。「apply」メソッドを使用してみてください

私はpandasに非常に慣れており、groupbyを使用しようとしています。複数の列を持つdfがあります。

  • 特定の列でグループ化し、別の列に基づいて各グループを並べ替えたい。
  • col1でグループ化し、各グループをcol5で並べ替えてから、reset_indexを実行して、データフレームのすべての行を取得します。
  • 次のエラーAttributeError: Cannot access callable attribute 'reset_index' of 'DataFrameGroupBy' objects, try using the 'apply' methodが発生します。

私の入力データフレーム:

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

私のコード:

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

あなたは使うことができます

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)

例を使用した明確な説明については、このstackoverflowリンクを参照してください すべてのグループのDataFrameのインデックスを1つのステップでリセットする方法

あなたは以下のコードを試すことができます、私は同様の問題がありました。

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

0
hakuna_code