2013-07-29 12 views
7

Ich kann keine Gruppe mit einem Pandas Series-Objekt erstellen. DataFrames sind in Ordnung, aber ich kann nicht scheinen, Groupby mit einer Reihe zu tun. Hat jemand das schaffen können?groupby for pandas Serie funktioniert nicht

>>> import pandas as pd 
>>> a = pd.Series([1,2,3,4], index=[4,3,2,1]) 
>>> a 
4 1 
3 2 
2 3 
1 4 
dtype: int64 
>>> a.groupby() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/generic.py", line 153, in groupby 
    sort=sort, group_keys=group_keys) 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/groupby.py", line 537, in groupby 
    return klass(obj, by, **kwds) 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/groupby.py", line 195, in __init__ 
    level=level, sort=sort) 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/groupby.py", line 1326, in _get_grouper 
    ping = Grouping(group_axis, gpr, name=name, level=level, sort=sort) 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/groupby.py", line 1203, in __init__ 
    self.grouper = self.index.map(self.grouper) 
    File "/share/apps/install/anaconda/lib/python2.7/site-packages/pandas/core/index.py", line 878, in map 
    return self._arrmap(self.values, mapper) 
    File "generated.pyx", line 2200, in pandas.algos.arrmap_int64 (pandas/algos.c:61221) 
TypeError: 'NoneType' object is not callable 

Antwort

10

Sie benötigen eine Abbildung von einer Art passieren (könnte eine dict/Funktion/index sein)

In [6]: a 
Out[6]: 
4 1 
3 2 
2 3 
1 4 
dtype: int64 

In [7]: a.groupby(a.index).sum() 
Out[7]: 
1 4 
2 3 
3 2 
4 1 
dtype: int64 

In [3]: a.groupby(lambda x: x % 2 == 0).sum() 
Out[3]: 
False 6 
True  4 
dtype: int64 
2

, wenn Sie Werte GROUPBY Serie benötigen:

grouped = a.groupby(a) 

oder

grouped = a.groupby(lambda x: a[x])