首页 > 解决方案 > 给定一个列表列表,如何在没有 pandas 的情况下使用 python 获得一组像 output_1 这样的列表?

问题描述

此代码对 N×2 数组进行分组,

df = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6]})
df.groupby('a')['b'].apply(list)

按第一列中的值

[['A' '1']
 ['A' '2']
 ['B' '5']
 ['B' '5']
 ['B' '4']
 ['C' '6']]

并得到这个结果(output_1)

a
A       [1, 2]
B    [5, 5, 4]
C          [6]
Name: b, dtype: object

我正在尝试在没有熊猫的情况下完成这项工作

from itertools import groupby
from operator import itemgetter
list(groupby(ds,key = itemgetter(0)))

看来我成功地分组了数据数组,

[('A', <itertools._grouper at 0x121f779e8>),
 ('B', <itertools._grouper at 0x121f77588>),
 ('C', <itertools._grouper at 0x121f77400>)]

现在,我被困在获取这些元素上。

list(list(groupby(ds,key = itemgetter(0)))[0][1])

给了我一个空列表[]

python - 如何在没有熊猫的情况下使用python获得一组像output_1这样的列表?

标签: python

解决方案


正如您从第一次尝试中看到的groupby那样,为每个元素生成键和迭代器,将键作为其每个项目。

您可以使用列表推导提取数据:

[(key, [elem[1] for elem in it]) for key, it in groupby(ds,key = itemgetter(0))]

或者,作为字典:

{key: [elem[1] for elem in it] for key, it in groupby(ds, key=itemgetter(0))}

推荐阅读