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

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

首先自定义一个简单的Dataframe

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

  • 情况1: 对某一列操作

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

data['score'].apply(lambda x:print(x))
data['score'].apply(lambda x:print(type(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)

可以看到此时,每一个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)

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

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

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