Python Pandas groupby:仅存储索引

Python Pandas groupby:仅存储索引,python,group-by,pandas,dataframe,Python,Group By,Pandas,Dataframe,我有一个大熊猫数据框(200000个条目和16列)。我想按颜色和代码对所有索引进行分组。重要的是,我想 1) 通过在groupby()期间排除所有不相关的列,最大限度地减少计算工作量 2) 通过仅存储每个颜色-代码对的索引,将所需内存降至最低 数据帧示例如下所示: import pandas as pd import numpy as np df = pd.DataFrame({'id' : range(1,9), 'code' : ['one', 'one

我有一个大熊猫数据框(200000个条目和16列)。我想按
颜色
代码
对所有索引进行分组。重要的是,我想

1) 通过在
groupby()期间排除所有不相关的列,最大限度地减少计算工作量

2) 通过仅存储每个
颜色
-
代码
对的索引,将所需内存降至最低

数据帧示例如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame({'id' : range(1,9),
                   'code' : ['one', 'one', 'two', 'three',
                             'two', 'three', 'one', 'two'],
                   'colour': ['black', 'white','white','white',
                           'black', 'black', 'white', 'white'],
                   'irrelevant1': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'irrelevant2': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'irrelevant3': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'amount' : np.random.randn(8)},  columns= ['id','code','colour', 'irrelevant1', 'irrelevant2', 'irrelevant3', 'amount'])
我的尝试:

df_reduced = df[['code','colour']] # I am manually removing the irrelevant columns before performing groupby()
gb = df_reduced.groupby(['code','colour'])
gb_dict = dict(list(gb))
gb_dict['one','white']
  code colour
1  one  white
6  one  white
但是,我根本不想存储
code
color
列。换句话说,我希望
gb_dict['one','white']
单独返回
[1,6]
。我怎样才能做到这一点


另外,我觉得手动定义
df\u reduced
是不必要的,当然我应该能够更优雅地限制我想要包含在
groupby()中的列?做这件事的最佳方法是什么?

您想让小组听写吗

>>> groups = df.groupby(['code','colour']).groups
>>> groups['one','white']
[1L, 6L]

谢谢,这似乎是对的。此操作的性能是否受df中列数的影响?i、 e.是否最好先执行
df_reduced=df[['code','color']]
,然后在
df_reduced
上运行此操作?我不想不必要地对所有不相关的列进行分组。@Zhubarb as
df[['code','color']]
构建了一系列新对象(包括一个新的数据帧),仅此一点就可能导致比较小数据帧可能带来的groupby性能增益更多的性能损失(不确定是否存在,因为对附加列的所有计算都是在转换或聚合阶段分组后完成的)