笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述pandas DataFrame apply()函数相关的知识,希望能为你提供帮助。
之前已经写过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=https://www.songbingjia.com/android/{/'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
【pandas DataFrame apply()函数】首先,可以使用 .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 AndreFF BarryBB ChrisCC DanCC EmilioBB FredCC GretaAA HumbertDD IvanAA JamesBB
可见,DataFrame的apply()方法默认作用于DataFrame的各列.
如果想作用于行,可以设置参数axis
DataFrame.apply(func,axis=0)
推荐阅读
- pandas DataFrame applymap()函数
- Application.ProcessMessages
- Android 开源框架 ( 二 ) 基于OkHttp进一步封装的okhttp-utils介绍
- GitHub# fatal: 'origin' does not appear to be a git repository
- 项目- Vue全家桶实战去哪网App
- Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏啦
- APP该做好哪些方面的运营
- PowerPC Embedded Application Binary Interface (EABI)初探
- Android 7.0 下载APK后自动安装