不知道小伙伴们学习python的dataframe时,是否遇到一个疑惑,apply参数axis的具体含义是什么?

官方文档解释如下:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

axis{0 or ‘index’, 1 or ‘columns’}, default 0

Axis along which the function is applied:

0 or ‘index’: apply function to each column.

1 or ‘columns’: apply function to each row.

也就是说,0代表按列,1代表按行

例如我的数据

import pandas as pd

tf = pd.read_csv(filepath)

sharein 0_country 1_country 2_country

0 1 USA USA NaN

1 2 France France Czech Republic

2 1 Australia Australia NaN

3 2 USA France France

4 2 USA France France

5 1 China China NaN

6 1 China China NaN

7 1 China China NaN

8 1 China China NaN

9 1 China China NaN

10 1 USA USA NaN

11 1 USA USA NaN

12 2 USA China USA

13 1 China China NaN

14 1 China China NaN

15 1 China China NaN

16 1 China China NaN

tf = tf.fillna("0")

首先我构建一个函数来计算

def count(n):

n1 = n.unique()#unique函数仅针对序列,df[]表示序列,df[[]]表示dataframe

n2 = len(list(n1))

if "0" in n1 :

n2-=1

return n2

显然,我的函数的目的在于按行对于tf进行操作,那我们设置axis = 1,来我们看一下结果

tf.apply(count,axis = 1)

0 1

1 2

2 1

3 2

4 2

5 1

6 1

7 1

8 1

9 1

10 1

11 1

12 2

13 1

14 1

15 1

16 1

正如我们预期一样,那我们再看另一个例子

tf1 = pd.read_csv(r"pathname")

>>> tf1

type affitype

0 1 2

1 2 3

2 1 1

3 2 3

4 2 3

5 1 1

6 1 1

7 1 2

8 1 1

9 1 1

10 1 1

11 1 1

12 2 2

13 1 2

14 1 2

15 1 2

16 1 2

我想根据以上两列满足一定的条件,然后新增列并且赋值,具体函数如下:

def define_type(i1,i2):

if i1 > 1:

t = "inte"

elif i1 == 1 and i2 == 1:

t = "in_a"

else:

t = "in_n"

return t

显然,此时我们是按列传入函数,应该用axis = 0,我们看看结果

tf1["Type"] = tf1.apply(lambda i:define_type(i["type"],i["affitype"]),axis = 0)

Traceback (most recent call last):

File "", line 1, in

tf1["Type"] = tf1.apply(lambda i:define_type(i["type"],i["affitype"]),axis = 0)

File "E:\py\lib\site-packages\pandas\core\frame.py", line 6487, in apply

return op.get_result()

_____

KeyError: ('type', 'occurred at index type')

结果显示报错,我又百度一番,发现此时设置axis = 1就得到我们想要的结果了

tf1["Type"] = tf1.apply(lambda i:define_type(i["type"],i["affitype"]),axis = 1)

>>> tf1["Type"]

0 in_n

1 inte

2 in_a

3 inte

4 inte

5 in_a

6 in_a

7 in_n

8 in_a

9 in_a

10 in_a

11 in_a

12 inte

13 in_n

14 in_n

15 in_n

16 in_n

Name: Type, dtype: object

我猜大概是和我们输入的参数类型有关吧,第一个是整个dataframe传入函数,后面这个是传入Series,没有进一步细究。

python apply函数_python玄学之 apply函数的axis参数相关推荐

  1. R语言使用plot函数可视化数据散点图,使用font.axis参数指定坐标轴刻度标签的字体类型为斜体字体(italic)

    R语言使用plot函数可视化数据散点图,使用font.axis参数指定坐标轴刻度标签的字体类型为斜体字体(italic) 目录

  2. python map函数_Python map()函数

    python map函数 Python map() function is used to apply a function on all the elements of specified iter ...

  3. python数字类型转换函数_Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

  4. python hist函数_Python主要数据探索函数

    Python中用于数据探索的库主要是pandas(数据分析)和 Matplotlib(数据可视化),其中pandas提供了大量的与数据库探索相关的函数,这些数据探索函数壳大致分为统计特征函数与统计绘图 ...

  5. python阶乘匿名函数_python的高阶函数与匿名函数

    一.高阶函数的定义 高阶函数:就是把函数当成参数传递的一种函数,例如: defadd(x,y,f):return f(x)+f(y)print(add(-8,11,abs) 结果:19 解释: 1.调 ...

  6. python中itemgetter函数_Python中的sorted函数以及operator.itemgetter函数

    operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2,3] >>> b=op ...

  7. python日期函数_python 时间及日期函数

    本人最近新学python ,用到关于时间和日期的函数,经过一番研究,从网上查找资料,经过测试,总结了一下相关的方法. import time import datetime '''时间转化为时间戳: ...

  8. python max函数_Python max内置函数详细介绍

    Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest ite ...

  9. python拷贝文件函数_Python Set集合,函数,深入拷贝,浅入拷贝,文件处理

    1.Set基本数据类型 a.set集合,是一个无序且不重复的元素集合 classset(object):"""set() -> new empty set obje ...

最新文章

  1. 【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符
  2. git/ TortoiseGit如何使用证书登录
  3. Linux下V4L2捕捉画面+H264压缩视频+帧缓冲显示视频————H264压缩视频
  4. Vue学习笔记入门篇——数据及DOM
  5. 链表和顺序表的一些区别
  6. (十一)OpenCV实现图像频率域滤波
  7. System Center VMM请注意不同语言版本的差异
  8. 大学生IT创业计划书
  9. 多个jQuery版本如何共存
  10. 信息系统项目管理之进度管理过程
  11. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(四)
  12. CSJ加人|cs如何加人|cs加人快捷键
  13. 从技术角度告诉你,区块链到底有哪些特点和运作机制
  14. 我的汉字输入法编码方案
  15. 二、谈谈对数据库中索引的理解
  16. TOEFL wordlist 14
  17. 软件工程第二次作业(王伟东)
  18. 在JS数组特定索引处指定位置插入或修改元素的技巧
  19. eSIM的基本原理、相关标准、产业和应用
  20. 十字军东征一些君主AI的对话

热门文章

  1. 李岳恒:警惕STO成为次级资产的包装纸
  2. 21 Redis 缓冲区的用法
  3. 【可视化工具】visdom
  4. [linux专题]基于linux进程编程
  5. AngularJS中使用HTML5手机摄像头拍照
  6. 闷声大发财的暴富逻辑【转】
  7. 如何判断直线之间和直线与平面之间的关系
  8. Makefile 条件编译-y
  9. javascript 实现的表格斜线
  10. 整体加空格HTML,javascript如何加空格?