我承认我不是 Python 专家,但我仍然发现与 Pandas 打交道DataFrameGroupBy
and 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'])
我希望能够得到id
分组依据code
and colour
。下面的代码进行分组,但保留所有列。
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) In gb
,我如何只存储id
列(甚至没有任何索引)并删除其余部分?
2)一旦我有了想要的DataFrameGroupBy
gb
,我如何访问id
{code = 1 and color=white} 的情况有多少?我试过gb.get_group('one','white')
and gb.get_group(['one','white'])
但它们不起作用。
3)如何访问 {color=white} 的条目,即缺少code
index ?
4)最后,manual http://pandas.pydata.org/pandas-docs/dev/groupby.html不是很有帮助,您是否知道有任何来源提供了如何创建和访问这些分组对象的示例?