我有一个数据框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找到相应的集合?谢谢!
答案 0 :(得分:1)
尝试将set
与groupby
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'}