我有一个数据框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的对应集合?谢谢!

最佳答案

尝试将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'}

关于python - 如何在 Pandas 分组数据框中检索汇总值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40877788/

10-12 22:07