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