码迷,mamicode.com
首页 > 移动开发 > 详细

pandas DataFrame apply()函数(1)

时间:2018-07-29 15:18:27      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:http   bsp   htm   col   自定义   定义函数   学生   app   mes   

之前已经写过pandas DataFrame applymap()函数

还有pandas数组(pandas Series)-(5)apply方法自定义函数

pandas DataFrame 的 applymap() 函数和pandas Series 的 apply() 方法,都是对整个对象上个各个值进行单独处理,返回一个新的对象.

而pandas DataFrame 的  apply() 函数,虽然也是作用于DataFrame的每个值,但是接受的参数不是各个值本身,而是DataFrame里各行(或列),返回一个新的行(列):

有如下一组数据: 记录了10个学生在两次考试的成绩:

grades_df = pd.DataFrame(
    data={exam1: [43, 81, 78, 75, 89, 70, 91, 65, 98, 87],
          exam2: [24, 63, 56, 56, 67, 51, 79, 46, 72, 60]},
    index=[Andre, Barry, Chris, Dan, Emilio, 
           Fred, Greta, Humbert, Ivan, James]
)

要求把学生的成绩转换成A,B,C,D,E,五个等级,转换规则如下:

考分前 20% 的成绩得到A

20% - 50% 的得到B

50% - 80% 的得到C

80% - 90% 的得到D

90% - 100% 的得到E

首先,可以使用 .qcut() 方法来写一个按照区间转换数据值的函数: pandas的qcut()方法

def convert_grades_curve(exam_grades):
    return pd.qcut(exam_grades, [0, 0.1, 0.2, 0.5, 0.8, 1], labels=[E, D, C, B, A])

然后对整个DataFrame应用这个函数

print grades_df.apply(convert_grades_curve)
        exam1 exam2
Andre       F     F
Barry       B     B
Chris       C     C
Dan         C     C
Emilio      B     B
Fred        C     C
Greta       A     A
Humbert     D     D
Ivan        A     A
James       B     B

可见,DataFrame的apply()方法默认作用于DataFrame的各列.

如果想作用于行,可以设置参数axis

 DataFrame.apply(func,axis=0) 

pandas DataFrame apply()函数(1)

标签:http   bsp   htm   col   自定义   定义函数   学生   app   mes   

原文地址:https://www.cnblogs.com/liulangmao/p/9342806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!