欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pandas的apply中的x到底是什么

程序员文章站 2022-03-27 13:07:08
使用pandas时经常会用到map,apply函数,一般是配合自己定义的匿名函数(lambda)或者函数使用,比较灵活方便。但是一般也没有深究函数中的那个x到底是什么,是一个数字或者字符,一行还是一列?现在我们来仔细看看到底是啥,明白了这个对我们使用apply的时候自定义函数十分有益首先自定义一个简单的Dataframeimport pandas as pddata=pd.DataFrame({"id":[1,3,5,7],"score":[61,63,65,67]})情况1: 对某一列....

使用pandas时经常会用到map,apply函数,一般是配合自己定义的匿名函数(lambda)或者函数使用,比较灵活方便。但是一般也没有深究函数中的那个x到底是什么,是一个数字或者字符,一行还是一列?

现在我们来仔细看看到底是啥,明白了这个对我们使用apply的时候自定义函数十分有益

首先自定义一个简单的Dataframe

import pandas as pd
data=pd.DataFrame({"id":[1,3,5,7],"score":[61,63,65,67]})

pandas的apply中的x到底是什么

  • 情况1: 对某一列操作

那现在我们对score这一列进行apply操作,看看每一个x是啥,是啥类型

data['score'].apply(lambda x:print(x))
data['score'].apply(lambda x:print(type(x)))

pandas的apply中的x到底是什么
显而易见,当对某一列数据操作apply时,每一个x就是该列的每一个数字或者字符串

上面也可以写为:

def my_print(s):
    print(s)
    print(type(s))
data['score'].apply(my_print)
  • 情况2:对多列操作,axis=0
    axis=0是对dataframe使用apply的默认设置,表示对数据按列为单位操作
data.apply(lambda x:print(x),axis=0)
data.apply(lambda x:print(type(x)),axis=0)

pandas的apply中的x到底是什么
可以看到此时,每一个x代表数据中的每一列,每一列是一个Series,Series的索引是原来的行索引:0,1,2,3

  • 情况3:对多列操作,axis=1
    axis=1表示对数据按行为单位操作
data.apply(lambda x:print(x),axis=1)
data.apply(lambda x:print(type(x)),axis=1)

pandas的apply中的x到底是什么
可以看到此时,每一个x代表数据中的每一行,每一行是一个Series,Series的索引是原来的列名:id,score

明白了这些,以后再使用自定义函数处理数据,就不会对传进函数的参数到底是啥而犯迷糊了

本文地址:https://blog.csdn.net/qq_38412868/article/details/107428060

相关标签: pandas Python