2015-08-09 3 views
0

Я хочу сгруппировать данные в dataframe У меня есть колонка «Count» и другая колонка «State». Я хотел бы вывести список списка, каждый список подмножеств будет просто счетчиком для каждого состояния.Группировка в Pandas

пример вывода: [[120200], [40, 20, 40], ...]

120 и 200 будет рассчитывает на скажем, штата Калифорния

Я попытался следующие:

df_new = df[['State']].groupby(['Count']).to_list() 

я получаю исключение KeyError: 'количество'

Traceback:

Traceback (most recent call last): 
    File "C:\Users\Michael\workspace\UCIIntrotoPythonDA\src\Michael_Madani_week3.py", line 84, in <module> 
    getStateCountsDF(filepath) 
    File "C:\Users\Michael\workspace\UCIIntrotoPythonDA\src\Michael_Madani_week3.py", line 81, in getStateCountsDF 
    df_new = df[['State']].groupby(['Count']).to_list() 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\generic.py", line 3159, in groupby 
    sort=sort, group_keys=group_keys, squeeze=squeeze) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\groupby.py", line 1199, in groupby 
    return klass(obj, by, **kwds) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\groupby.py", line 388, in __init__ 
    level=level, sort=sort) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2148, in _get_grouper 
    in_axis, name, gpr = True, gpr, obj[gpr] 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\frame.py", line 1797, in __getitem__ 
    return self._getitem_column(key) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\frame.py", line 1804, in _getitem_column 
    return self._get_item_cache(key) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\generic.py", line 1084, in _get_item_cache 
    values = self._data.get(item) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\internals.py", line 2851, in get 
    loc = self.items.get_loc(item) 
    File "C:\Users\Michael\Anaconda\lib\site-packages\pandas\core\index.py", line 1572, in get_loc 
    return self._engine.get_loc(_values_from_object(key)) 
    File "pandas\index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas\index.c:3824) 
    File "pandas\index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas\index.c:3704) 
    File "pandas\hashtable.pyx", line 686, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12280) 
    File "pandas\hashtable.pyx", line 694, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12231) 
KeyError: 'Count' 

Я чувствую, что это должна быть простая строка кода, что я делаю неправильно здесь?

+0

Это не может работать: 'df [['State']]. Groupby (['Count'])'. Сначала вы создаете дополнительный фрейм данных, который содержит только столбец «State», а затем пытается группировать столбец «Count». Но этот столбец, очевидно, не существует в вашем субкадре данных. – cel

+0

Что вы пытаетесь достичь? –

ответ

1

Можно как однострочника:

import pandas as pd                   

df = pd.DataFrame.from_dict({"State": ["ny", "or", "ny", "nm"],      
          "Counts": [100,300,200,400]}) 

list_new = df.groupby("State")["Counts"].apply(list).tolist() 
print(list_new) 

[[400], [100, 200], [300]] 

Вы должны прочитать документ о GroupBy, чтобы увидеть, что ожидаемый результат группирования и как изменить эту ситуацию (http://pandas.pydata.org/pandas-docs/stable/groupby.html).

+0

ps: И подумайте о принятии ответов в какой-то момент, если вы чувствуете, что они решили ваш вопрос. –

Смежные вопросы