西儿马 | pandas的groupby问题

学习pandas时,对groupby的用法有点疑惑。
以下是一下DataFrame示例:

In [1]: df
Out [2]:
        data1   data2    key1   key2
0   0.233689    0.139407    a   one
1   0.491570    0.366669    a   two
2   0.453069    0.872943    b   one
3   0.935608    0.161360    b   two
4   0.364860    0.182786    a   one
  1. 按key1进行分组
In [3]: grouped1 = df.groupby(df['key1'])
In [4]: grouped1.mean()
Out [4]:
        data1       data2
key1        
a   0.363373    0.229621
b   0.694339    0.517151

因为groupby本身没有计算成果,所以我们调用mean来看结果。

  1. 按自定义列表进行分组
In [5]: grouped2 = df.groupby(['1', '1', '2', '2', '1'])
In [6]: grouped2.mean()
Out [6]:
        data1       data2   
1   0.363373    0.229621
2   0.694339    0.517151

为什么grouped1和grouped2是相等的呢?我觉得可以这样来理解:在进行分组时,是根据分组列表的元素对被分组的DataFrame进行分组,也就是说,无论是['a', 'a', 'b', 'b', 'a'],还是['1', '1', '2', '2', '1'],都是把第1、2、和5行分为一组,把第3行和第4行分为一组,所以,如果再来一个grouped3 = df.groupby(['3', '3', 'F', 'F', '3']),其分组结果仍然是一样的。
但是如果把分组列表换成['a', 'a', 'a', 'b', 'c']呢?又会现什么样的结果?

In [7]: grouped4 = df.groupby(['a', 'a', 'a', 'b', 'c'])
In [8]: grouped4.mean()
Out [8]: 
     data1     data2
a   0.392776    0.459673
b   0.935608    0.161360
c   0.364860    0.182786
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容