DataFrame中的apply方法就是将函数应用到由列或行形成的一维数组上。
import pandas as pd
df=pd.DataFrame(np.random.randn(4,5),columns=list('abcde'))
# 求每列的最大值与最小值的差
a = df.apply(lambda x:x.max()-x.min())
# 求每行的最大值与最小值的差
b = df.apply(lambda x:x.max()-x.min(), axis=1)
print(a,b)
输出为
a 2.213453
b 1.198963
c 2.947490
d 3.325584
e 2.623098
dtype: float64
0 3.759892
1 2.264123
2 3.651309
3 1.763461
dtype: float64
传递给apply的函数还可以返回由多个值组成的Series
def f(x):
return pd.Series([x.min(),x.max()],index=['min','max'])
d=df.apply(f)
print(d)
输出位
a b c d e
min -1.360919 -0.734977 -2.239865 -1.163558 -0.972874
max 0.852534 0.463986 0.707624 2.162025 1.650224
applymap可以将函数应用到每个元素
c = df.applymap(lambda x:x*100)
print(c)
输出位
a b c d e
0 -136.091901 46.398574 -159.786632 216.202542 165.022380
1 85.253362 -20.692376 70.762420 129.124904 -97.287443
2 9.719120 -73.497747 -223.986547 -116.355814 141.144336
3 -31.488432 28.213371 23.224524 144.857662 -24.526428