首页 > 解决方案 > 从数据框 pandas 创建 groupby 函数

问题描述

我的模拟数据框由这两列(字符和值)组成,我想创建一个函数,根据其唯一值迭代列“字符”,然后获取与其关联的所有值。好心劝告。

预期结果:

temp = ({a:[100,400], b:[200,200], c:[200,200]})
df
characters values
  a         100
  b         200
  a         400
  b         200
  c         200
  c         200

我知道我必须创建一个空列表,然后迭代“字符”列并将值附加到列表中。这是我的粗略想法(不完整)

def groups_per_character(df):
    temp = {}
    for characters,values in df.values():
        for character in characters:
            if character not in temp:
                temp[character]=[]
            temp[character].append(values)
        return temp

所以基本上我试图做一个比类似但不一样的功能

df.groupby("characters").min()

运行函数“numpy.ndarray”对象不可调用时发生错误

标签: pythonpandaslistdataframedictionary

解决方案


您不需要创建单独的函数。

只需Groupby.agg使用df.to_dict()

In [1687]: x = df.groupby('characters').agg(list).to_dict()

In [1688]: temp = x['values']

In [1689]: temp
Out[1689]: {'a': [100, 400], 'b': [200, 200], 'c': [200, 200]}

推荐阅读