一个小练习,理解起来挺吃力的,我加了注释,以后看的多了,再回来看,应该好理解

# group_6.apply(function_name) # 对分组对象应用自定义函数
# 练习: 对df6按k3分组后,求每组中k2列的最大值和最小值
# 要求利用 apply 函数

这个作业看着很简单,但是我理解起来挺吃力的。
这个答案不是我写的,实在是不好下口,因为理解的不到位,没有切入点吧...不知道为啥这个这么吃力
df6 = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],

                    'k2': [1, 1, 2, 3, 3, 4, 4]})

bins = pd.cut(df6['k2'], [0, 2, 4], labels=['Low', 'High']) #还是用0~2,2~4分开,但是标签用low跟high

df6['k3'] = bins   #

group_6 = df6['k2'].groupby(df6['k3'])  #这是懵逼,我的理解是df6['k2]这一串数字进行group化统计,用k3里的low与hig分成2组

print(group_6.max(),'我是max')  #打印了一下看了看 k3
                                 #                 Low     2                      #low里边最大的
                                 #                 High    4                      #high里边最大的
                                 #                 Name: k2, dtype: int64 我是max
print(group_6.min(),'我是min') ##打印了一下看了看 k3
                                 #                 Low     1                      #low里边最小的
                                 #                 High    3                      #high里边最小的
                                 #                 Name: k2, dtype: int64 我是min
def myfunc(g):  #这里也能看懂,就是传入一个group(分组统计的类)

    return {'Max': g.max(), 'Min': g.min()}     #以字典的形势返回

print(group_6.apply(myfunc))   #group_适用于后边的函数表达式

运行结果

k3
Low     2
High    4
Name: k2, dtype: int64 我是max

k3
Low     1
High    3
Name: k2, dtype: int64 我是min

k3       
Low   Max    2
      Min    1
High  Max    4
      Min    3
Name: k2, dtype: int64

 



 

posted @ 2018-06-06 21:15  人无远虑  阅读(127)  评论(0编辑  收藏  举报