如何检索熊猫分组数据框中的聚合值

时间:2016-11-29 23:39:41

标签: python pandas dataframe aggregate-functions

我有一个数据框my_df

id       color 
--------------------     
001       red
001       blue
001       yellow
002       green
002       black
003       yellow
003       white
003       blue

然后我做了:

grouped_df = my_df.groupby('id')
a = grouped_df['id'].apply(lambda x: set(x.tolist()))

然后看起来像这样:

id
--------------------------------
001       {red,blue,yellow}
002       {green,black}
003       {yellow,white,blue}

如何循环a,以便为每个ID找到相应的集合?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试将setgroupby

一起使用
my_df.groupby('id').color.apply(set)

id
1      {blue, red, yellow}
2           {black, green}
3    {white, yellow, blue}
Name: color, dtype: object

<强> 解释
您所做的和我做的之间的主要区别在于我使用.color优化了分组,然后应用了set。这可以确保我在系列而不是数据框上应用set

如果您将groupby的结果分配给变量...说g

g = my_df.groupby('id').color.apply(set)

然后,索引值

可以轻松引用每个组
g.loc[1]

{'blue', 'red', 'yellow'}

你可以像这样循环

for i, v in g.iteritems():
    print(i, v)

1 {'blue', 'red', 'yellow'}
2 {'black', 'green'}
3 {'white', 'yellow', 'blue'}