一个小练习,理解起来挺吃力的,我加了注释,以后看的多了,再回来看,应该好理解
# 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