2

2 つのグループ化列と 3 つの数値列を持つ pandas DataFrame があります。次のようにデータをグループ化しています。

df = df.groupby(['date_week', 'uniqeid']).agg({
    'completes':['sum', 'median', 'var', 'min', 'max']
    ,'dcount_visitors': ['sum', 'median', 'var', 'min', 'max']
     ,'dcount_visitor_groups': ['sum', 'median', 'var', 'min', 'max']
     })

結果は、予想されるマルチレベル インデックスです。

MultiIndex(levels=[['completes', 'dcount_visitors', 'dcount_subscriptions', 'dcount_visitor_groups', 'date_week'], ['sum', 'median', 'var', 'min', 'max', '']],
           labels=[[4, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2], [5, 5, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]])

通常、次のようにマルチインデックスをフラット化します。

df2 = df2.reset_index(drop=True)

ただし、列を調べると、まだマルチインデックスが表示されます。groupby 関数に を含めようとしas_index=Falseましたが、それも機能しません。

興味深いことに、1 つの集計で 1 つの数値列のみを使用する場合、このプロセスは期待どおりに機能します。

u = nunits.groupby(['account', 'week_date', 'accountid', 'full_account_name','SegmentName'], as_index=False).agg({'ConsumptionUnit': 'sum'})

Index(['account', 'week_date', 'accountid', 'full_account_name', 'SegmentName',
       'ConsumptionUnit'],
      dtype='object')

ヒントや推奨事項をいただければ幸いです。

4

2 に答える 2

1

multi_index (0,1,2,3...) でレベルを識別する必要があります。そして、df を再割り当てする代わりに inplace=True を使用します

于 2019-04-23T22:22:14.267 に答える