24. Pandas的数据清洗-apply函数

之前的replace、dropna、fillna函数要么针对NaN的某行或某列或某个,这些函数的作用有限,本章介绍的apply等函数可以针对整个Series或DataFrame的各个值进行相应的数据的处理。

  • 对Series应用apply函数。
import pandas as pd
import numpy as np
s = pd.Series(np.arange(2,6))
print s
print s.apply(lambda x : 2 * x)

程序的执行结果;

0    2
1    3
2    4
3    5
dtype: int64
0     4
1     6
2     8
3    10
dtype: int64

从程序的执行结果可以看出,应用了apply函数对Series的每个元素值都乘上了2。

  • 对DataFrame应用apply函数。
import pandas as pd
import numpy as np
df = pd.DataFrame(val, index = idx, columns = col)
print df
print df.apply(lambda col : col.sum(), axis = 0)
print df.apply(lambda row : row.sum(), axis = 1)
df["hello x the"] = df.apply(lambda row : row.hello * row.the, axis = 1)
print df
  • apply函数一般针对整行或者整列而applymap函数会针对单独的元素值来处理。
import pandas as pd
import numpy as np
df = pd.DataFrame(val, index = idx, columns = col)
print df
print df.applymap(lambda x : x + 3)

程序执行结果:

   hello  the  cruel  world
a      0    1      2      3
b      4    5      6      7
c      8    9     10     11
d     12   13     14     15
   hello  the  cruel  world
a      3    4      5      6
b      7    8      9     10
c     11   12     13     14
d     15   16     17     18