要将自定义或其他库的函数应用于Pandas对象,有三个重要的方法,下面来讨论如何使用这些方法。使用适当的方法取决于函数应用于哪个层面(DataFrame,行或列或元素)。

  • 表合理函数应用:pipe()
  • 行或列函数应用:apply()
  • 元素函数应用:applymap()

一、对整个DataFrame执行操作

  可以通过将函数和适当数量的参数作为管道参数来执行自定义操作

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. # adder函数将两个数值作为参数相加并返回总和
  5. def adder(ele1,ele2):
  6. return ele1+ele2
  7.  
  8. df = pd.DataFrame(np.random.randn(,),columns=['col1','col2','col3'])
  9. df.pipe(adder,) # 现在将使用自定义函数对DataFrame进行操作
  10. print(df)

输出结果:

  1. col1 col2 col3
  2. 0 2.176704 2.219691 1.509360
  3. 1 2.222378 2.422167 3.953921
  4. 2 2.241096 1.135424 2.696432
  5. 3 2.355763 0.376672 1.182570
  6. 4 2.308743 2.714767 2.130288
 

二、对行或列执行操作

可以使用apply()方法沿DataFramePanel应用任意函数,它与描述性统计方法一样,采用可选的axis参数。 默认情况下,操作按列执行,将每列列为数组。

示例-1

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. df.apply(np.mean)
  6. print(df)

输出结果:

  1. col1 col2 col3
  2. 0 0.343569 -1.013287 1.131245
  3. 1 0.508922 -0.949778 -1.600569
  4. 2 -1.182331 -0.420703 -1.725400
  5. 3 0.860265 2.069038 -0.537648
  6. 4 0.876758 -0.238051 0.473992
 

通过传递axis参数,可以在行上执行操作。

示例-2

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. df.apply(np.mean,axis=1)
  6. print(df)
  1. 输出结果:
  1. col1 col2 col3
  2. 0 0.543255 -1.613418 -0.500731
  3. 1 0.976543 -1.135835 -0.719153
  4. 2 0.184282 -0.721153 -2.876206
  5. 3 0.447738 0.268062 -1.937888
  6. 4 -0.677673 0.177455 1.397360
 

示例-3

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. df.apply(lambda x: x.max() - x.min())
  6. print(df)

输出结果:

  1. col1 col2 col3
  2. 0 -0.585206 -0.104938 1.424115
  3. 1 -0.326036 -1.444798 0.196849
  4. 2 -2.033478 1.682253 1.223152
  5. 3 -0.107015 0.499846 0.084127
  6. 4 -1.046964 -1.935617 -0.009919
 

三、对元素执行操作

并不是所有的函数都可以向量化(也不是返回另一个数组的NumPy数组,也不是任何值),在DataFrame上的方法applymap()和类似于在Series上的map()接受任何Python函数,并且返回单个值。

示例-1

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. df['col1'].map(lambda x:x*100)
  6. print(df)

输出结果:

  1. col1 col2 col3
  2. 0 0.629348 0.088467 -1.790702
  3. 1 -0.592595 0.184113 -1.524998
  4. 2 -0.419298 0.262369 -0.178849
  5. 3 -1.036930 1.103169 0.941882
  6. 4 -0.573333 -0.031056 0.315590
 

示例-2

  1. import pandas as pd
  2. import numpy as np
  3.  
  4. df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
  5. df.applymap(lambda x:x*100)
  6. print(df)

输出结果:

  1. output is as follows:
  2. col1 col2 col3
  3. 0 17.670426 21.969052 -49.064031
  4. 1 22.237846 42.216693 195.392124
  5. 2 24.109576 -86.457646 69.643171
  6. 3 35.576312 -162.332803 -81.743023
  7. 4 30.874333 71.476717 13.028751

Pandas | 07 函数应用的更多相关文章

  1. Pandas的函数应用、层级索引、统计计算

    1.Pandas的函数应用 1.apply 和 applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random ...

  2. pandas常用函数之shift

    shift函数是对数据进行移动的操作,假如现在有一个DataFrame数据df,如下所示: index value1 A 0 B 1 C 2 D 3 那么如果执行以下代码: df.shift() 就会 ...

  3. pandas常用函数之diff

    diff函数是用来将数据进行某种移动之后与原数据进行比较得出的差异数据,举个例子,现在有一个DataFrame类型的数据df,如下: index value1 A 0 B 1 C 2 D 3 如果执行 ...

  4. pandas 常用函数整理

    pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...

  5. Python web前端 07 函数及作用域

    Python web前端 07 函数及作用域 一.函数 1.有名函数和匿名函数 #函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 #函数就是包裹在花括号里面的代码块,前面使用了关键字fun ...

  6. python pandas字符串函数详解(转)

     pandas字符串函数详解(转)——原文连接见文章末尾 在使用pandas框架的DataFrame的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字,某列的字符长度是否小于3等等 ...

  7. 【转载】pandas常用函数

    原文链接:https://www.cnblogs.com/rexyan/p/7975707.html 一.import语句 import pandas as pd import numpy as np ...

  8. Pandas常用函数入门

    一.Pandas Python Data Analysis Library或Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的.Pandas纳入了大量库和一些标准的数据模型, ...

  9. pandas常用函数

    1. df.head(n): 显示数据前n行,不指定n,df.head则会显示所有的行 2. df.columns.values获取所有列索引的名称 3. df.column_name: 直接获取列c ...

随机推荐

  1. Java 常用知识点汇总(数据类型之间转换、字符串的相关操作-截取、转换大小写等)

    1.Java四类八种数据类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围- ...

  2. CAS5单点登录

    看这篇文章即可:https://www.jianshu.com/p/c1273d81c4e4>https://www.jianshu.com/p/c1273d81c4e4

  3. secure-file-priv特性

    转载自:https://segmentfault.com/a/1190000009333563 当出现:1290 - The MySQL server is running with the --se ...

  4. 《 .NET并发编程实战》阅读指南 - 第12章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  5. 2019-11-29-win10-uwp-颜色转换

    原文:2019-11-29-win10-uwp-颜色转换 title author date CreateTime categories win10 uwp 颜色转换 lindexi 2019-11- ...

  6. Cases:Unit Testing with the MSTest Framework

    UnitTesting shanzm 右键-->在新标签页中打开图片,即可查看原图,图片超乎你想像的大! 源代码:https://github.com/shanzm/UnitTesting

  7. sqlserver之datepart和datediff应用查找当天上午和下午的数据

    DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. DATEDIFF() 函数返回两个日期之间的时间差. --查找当天上午的数据 ) --查找当天下午的数据 ) ...

  8. php操作cassandra

    php操作  https://www.cnblogs.com/fakis/archive/2010/04/16/1976653.html 这篇文章还没试过.暂时留着有时间再实验

  9. 面试官:“谈谈Spring中都用到了那些设计模式?”。

    我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star.会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclim ...

  10. vue自学笔记

      做前端也做了一段时间了,为了高薪,不能一直做网页不是~~,所以从今天开始整理vue的笔记 内容都是从网上搜集整合并且自己实践过了的,需要注意的点,也在后面标注了“注”   当然了,如果有什么问题的 ...