【发布时间】:2019-04-23 22:17:42
【问题描述】:
我有一个带有 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 个数字列和一个聚合,则此过程按预期工作。
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')
任何提示或建议将不胜感激。
【问题讨论】:
-
你试过
df2.columns = df2.columns.get_level_values(0)吗? -
即使加了
[]agg({'ConsumptionUnit': ['sum']})只有一个值,它仍然是列中的多个索引,这就是它的工作原理
标签: python pandas feature-engineering