记录groupby的一次操作

df = pd.DataFrame({'key1':list('aabba'),
'key2': ['one','two','one','two','one'],
'data1': np.random.randn(5),
'data2': np.random.randn(5)})
df

 data1data2key1key2
0 -0.014192 2.236780 a one
1 -0.028981 0.507988 a two
2 -1.168170 -0.818003 b one
3 0.207849 0.755156 b two
4 -0.457174 -1.407547 a one

g=df.groupby(["key1"])
g.head(4)

 data1data2key1key2
0 -0.014192 2.236780 a one
1 -0.028981 0.507988 a two
2 -1.168170 -0.818003 b one
3 0.207849 0.755156 b two



g['data1'].head(2)

0   -0.014192
1   -0.028981
2   -1.168170
3    0.207849
Name: data1, dtype: float64

feature_bag = g['data1'].apply(lambda x:set(x)).reset_index()

feature_bag

前面的情况比较好了解,groupby返回的是一个groupby对象。它实际上还没有进行任何计算,只是含有一些有分组键的中间数据而已。

因此输出g的时候,没有变化,抽取其中一列也和直接对df操作并没有什么区别。

但是做操作:feature_bag = g['data1'].apply(lambda x:set(x)).reset_index()。

做集合的时候,是以groupby()的key1的键值作为集合的生成判断标准的。



原文地址:https://www.cnblogs.com/smartwhite/p/9664360.html