gpt4 book ai didi

python - Pandas reset_index() 在通过多种方法分组和聚合后不起作用

转载 作者:行者123 更新时间:2023-12-01 01:00:38 25 4
gpt4 key购买 nike

我有一个 pandas DataFrame,有 2 个分组列和 3 个数字列。我将数据分组如下:

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 个数字列和一个聚合,则此过程会按预期工作。

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

如有任何提示或建议,我们将不胜感激。

最佳答案

(意识到“接受”自己的问题有点违反规范,但希望节省人们回答已解决问题的时间)

@Efran:我做到了,它是一个 2 级多索引。@Bugbeeb:关于确定级别的好建议。标签上的 5 让我很失望。

我能够找到答案:从 Pandas 0.24.0 开始,您可以使用 .to_flat_index。我一直在使用 0.23.0,所以在该文档中没有找到这个选项。

可以找到如何使用它的示例 here

之后:df.columns = df.columns.to_flat_index()结果索引如下所示

Index([                                   'date_week',
'TPID',
('completes', 'sum'),
('completes', 'median'),
('completes', 'var'),
('completes', 'min'),
('completes', 'max'),
('dcount_visitors_with_events', 'sum'),
('dcount_visitors_with_events', 'median'),
('dcount_visitors_with_events', 'var'),
('dcount_visitors_with_events', 'min'),
('dcount_visitors_with_events', 'max'),
('dcount_id_groups', 'sum'),
('dcount_id_groups', 'median'),
('dcount_id_groups', 'var'),
('dcount_id_groups', 'min'),
('dcount_id_groups', 'max')],
dtype='object')

希望这对其他人有帮助,并感谢您的快速回复。这个社区太棒了!

关于python - Pandas reset_index() 在通过多种方法分组和聚合后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com