【发布时间】:2014-01-15 13:43:04
【问题描述】:
我承认我不是 Python 专家,但我仍然发现处理 Pandas DataFrameGroupBy 和 SeriesGroupBy 对象异常违反直觉。 (我有 R 背景。)
我有下面的数据框:
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'])
我希望能够获得按code 和colour 分组的id。下面的代码进行分组但保留所有列。
gb = df.groupby(['code','colour'])
gb.head(5)
id code colour irrelevant1 irrelevant2 irrelevant3 amount
code colour
one black 0 1 one black foo foo foo -0.644170
white 1 2 one white foo foo foo 0.912372
6 7 one white bar bar bar 0.530575
three black 5 6 three black foo foo foo -0.123806
white 3 4 three white bar bar bar -0.387080
two black 4 5 two black bar bar bar -0.578107
white 2 3 two white foo foo foo 0.768637
7 8 two white bar bar bar -0.282577
问题:
1) 在gb 中,我如何只存储id 列(甚至没有任何索引)并摆脱其余部分?
2) 获得所需的DataFrameGroupBy gb 后,如何访问{code = one and colour=white} 的ids 情况?我尝试了gb.get_group('one','white') 和gb.get_group(['one','white']),但它们不起作用。
3)如何访问 {colour=white} 的条目,即缺少 code 索引?
4) 最后,manual 不是很有帮助,您知道有哪些来源有关于如何创建和访问这些分组对象的示例吗?
【问题讨论】: