0
点赞
收藏
分享

微信扫一扫

pandas中apply/map/applymap函数

谁知我新 2022-04-23 阅读 46
python

目录

apply

map

applymap

总结


apply

语法:DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)

按照DataFrame的轴应用函数,沿每一行或每一列应用,传递给函数的对象是Series。

参数func传入的是函数。参数axis = 0表示沿每一列应用,axis = 1表示沿每一行应用。其他参数详解见pandas.DataFrame.apply — pandas 1.4.2 documentation

#导入包
import numpy as np
import pandas as pd

#构造DataFrame数据
df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df

#传入数组函数,返回DataFrame
print(df.apply(np.sqrt))
print()

#传入数组中聚合函数,沿axis=0轴应用,返回Series
print(df.apply(np.sum, axis=0))
print()

#传入数组中聚合函数,沿axis=1轴应用,返回Series
print(df.apply(np.sum, axis=1))
print()

#传入lambda匿名函数
print(df.apply(lambda x: x.max()-x.min()))
print()

#传入自定义函数
def square(x):
    return x ** 2
print(df.apply(square))
print()

语法:Series.apply(funcconvert_dtype=Trueargs=()**kwargs)

参数func传入的是函数,应用在每一个元素上。其他参数详解见pandas.Series.apply — pandas 1.4.2 documentation

#构造数据
s = pd.Series([4, 9, 16],index=['A', 'B', 'C'])
s

 

#传入数组函数
print(s.apply(np.sqrt))
print()

#传入lambda匿名函数
print(s.apply(lambda x: x ** 2))
print()

#传入自定义函数
def square(x):
    return x ** 2
print(s.apply(square))
print()

map

语法:Series.map(argna_action=None)

根据输入的对应关系映射Series的值,运用到Series的每个元素上。

参数arg传入的可以是函数、字典、Series。其他参数详解见pandas.Series.map — pandas 1.4.2 documentation

#构造数据
s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
s

#传入字典,没有对应关系的默认为NaN
print(s.map({'cat': 'kitten', 'dog': 'puppy'}))
print()

#传入函数,没有对应关系的默认为NaN
print(s.map('I am a {}'.format))
print()

#传入函数,设置na_action='ignore'表示NA值不作转换
print(s.map('I am a {}'.format, na_action='ignore'))
print()

 

applymap

语法:DataFrame.applymap(funcna_action=None**kwargs)

参数func传入的是函数,应用在DataFrame的每个元素中,该函数接受并返回一个标量到每个元素。其他参数详解见pandas.DataFrame.applymap — pandas 1.4.2 documentationm    ​​​​​​​​​​​​​​​​​​

#构造数据
df = pd.DataFrame([[4.000, 9.123]] * 3, columns=['A', 'B'])
df

#数据类型转换成int
print(df.applymap(int))
print()

#传入lambda匿名函数
print(df.applymap(lambda x: len(str(x))))
print()

#传入自定义函数
def square(x):
    return x ** 2
print(df.applymap(square))
print()

总结

apply:应用在DataFrame的行或列中,也可以应用在Series的每个元素中

map:应用在Series的每个元素中

applymap:应用在DataFrame的每个元素中

举报

相关推荐

0 条评论