【问题标题】:Grouping in Pandas在 Pandas 中分组
【发布时间】:2015-11-01 07:14:48
【问题描述】:

我想对数据框中的数据进行分组,我有“计数”列和另一列“状态”。我想输出一个列表列表,每个子集列表只是每个状态的计数。

示例输出:[[120,200], [40, 20, 40], ...]

120 和 200 可以算作加利福尼亚州

我尝试了以下方法:

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

我得到一个键错误:'count'

追溯:

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'

我觉得这应该是简单的一行代码,我在这里做错了什么?

【问题讨论】:

  • 这不起作用:df[['State']].groupby(['Count'])。您首先创建一个仅包含 State 列的子数据框,然后尝试按 Count 列进行分组。但是您的子数据框中显然不存在此列。
  • 你想达到什么目的?

标签: python pandas group-by dataframe


【解决方案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)。

【讨论】:

  • ps:如果您觉得他们解决了您的问题,请考虑在某个时候接受答案。
猜你喜欢
  • 2015-09-29
  • 2020-01-03
  • 2016-06-14
  • 1970-01-01
  • 2021-12-27
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多