2013-07-29 37 views
7

Tôi không thể thực hiện một nhóm trên một đối tượng Dòng gấu trúc. DataFrames là tốt, nhưng tôi dường như không thể làm groupby với một Series. Có ai có thể làm việc này không?groupby for pandas Series không hoạt động

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

Trả lời

10

Bạn cần phải vượt qua một ánh xạ của một số loại (có thể là một dict/chức năng/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

nếu bạn cần phải groupby giá trị loạt:

grouped = a.groupby(a) 

hoặc

grouped = a.groupby(lambda x: a[x]) 
Các vấn đề liên quan