迭代pandas groupby对象

时间:2015-07-30 21:07:28

标签: python python-3.x numpy pandas iterator

以下代码使用python 2.x但不是python 3.x执行。

def index

错误是:

df = pd.DataFrame(data)
gb = df.groupby(['style'])
for a, b in gb:
    #any command, iteration fails

变量Traceback (most recent call last): File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/algorithms.py", line 143, in factorize sorter = uniques.argsort() TypeError: unorderable types: int() > str() During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 1250, in get_iterator splitter = self._get_splitter(data, axis=axis) File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 1256, in _get_splitter comp_ids, _, ngroups = self.group_info File "pandas/src/properties.pyx", line 34, in pandas.lib.cache_readonly.__get__ (pandas/lib.c:41917) File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 1365, in group_info comp_ids, obs_group_ids = self._get_compressed_labels() File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 1373, in _get_compressed_labels all_labels = [ping.labels for ping in self.groupings] File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 1373, in <listcomp> all_labels = [ping.labels for ping in self.groupings] File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 2023, in labels self._make_labels() File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/groupby.py", line 2034, in _make_labels labels, uniques = algos.factorize(self.grouper, sort=self.sort) File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/algorithms.py", line 152, in factorize lambda x: isinstance(x,string_types) ] File "/root/anaconda3/lib/python3.4/site-packages/pandas/core/algorithms.py", line 151, in <listcomp> np.sort(np.array([ e for i, e in enumerate(uniques) if f(e) ],dtype=object)) for f in [ lambda x: not isinstance(x,string_types), File "/root/anaconda3/lib/python3.4/site-packages/numpy/core/fromnumeric.py", line 799, in sort a.sort(axis, kind, order) TypeError: unorderable types: int() > str() 是一个字典列表,从python 2和python 3创建的两个数据帧都显示相同的结果。为什么python 3不允许我迭代data中的pandas.core.groupby.DataFrameGroupBy对象?

编辑:

以下是数据

中字典的示例
gb

1 个答案:

答案 0 :(得分:0)

style看起来应该是一个字符串元组。看起来你在某些元组中有一些整数。一种解决方案是在分组之前将任何非字符串转换为字符串

gb = df.groupby(by=lambda x: tuple(str(i) for i in data[x]['style']))
相关问题