更新时间:2022-10-31 来源:黑马程序员 浏览量:
与字典或Series对象相比,使用函数作为分组键会更加灵活,任何一个被当做分组键的函数都会在各个索引值上被调用一次,返回的值会被用作分组名称。
创建一个DataFrame对象,将其行索引的名称设为字符串类型的,具体代码如下。
In [11]: import pandas as pd df=pd.DataFrame({'a':[1, 2, 3, 4, 5], 'b':[6, 7, 8, 9, 10], 'c':[5, 4, 3, 2, 1]}, index=['Sun', 'Jack', 'Alice', 'Helen', 'Job'] df Out[11]: a b c Sun 1 6 5 Jack 2 7 4 Alice 3 8 3 Helen 4 9 2 Job 5 10 1
如果以行索引名称的长度进行分组,则长度相同的行索引名称会分为一组,即索引名称长度为3的分为一组,长度为4的分为一组,长度为5的分为一组,共分成三组。接下来,以行索引名称的长度作为分组键,将DataFrame对象的数据拆分成三组数据,具体代码如下。
In [12]: groupby_obj=df.groupby(len) #使用内置函数len进行分组 for group in groupby_obj: # 遍历分组对象 print(group) Out[12]: (3, a b c Sun 1 6 5 Job 5 10 1) (4, a b c Jack 2 7 4) (5, a b c Alice 3 8 3 Helen 4 9 2)
上述示例中,在调用groupby()方法时传入了内置函数len(),表明len()函数会对行索引一列执行求长度的操作,调用len函数返回的长度值作为分组名称,一旦发现索引名称的长度值一样,就归类为一组。
从输出结果可以看出,索引名称长度为3的“Sun”和“Job”归为第一组,长度为4的是“Jack”单独为第二组,长度为5的是“Alice”和“Helen”归为第三组。