2013-07-29 55 views
7

Non riesco a fare un groupby su un oggetto Series pandas. DataFrames vanno bene, ma non riesco a fare groupby con una serie. Qualcuno è riuscito a farlo funzionare?groupby for pandas Serie non funzionante

>>> 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 

risposta

10

è necessario passare una mappatura di qualche tipo (potrebbe essere un dict/funzione/index)

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

se avete bisogno di groupby valori della serie:

grouped = a.groupby(a) 

o

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