Python Pandas 简明教程
Python Pandas - Function Application
要将自己的函数或其他库的函数应用于 Pandas 对象,您应该注意这三种重要方法。下面讨论了这些方法。使用哪种合适的方法取决于您的函数是否期望对整个 DataFrame、面向行或列或按元素进行操作。
-
按表方式应用函数:pipe()
-
按行或列方式应用函数:apply()
-
按元素方式应用函数:applymap()
Table-wise Function Application
自定义操作可以通过传递函数和适量参数作为管道参数来执行。因此,操作将对整个 DataFrame 执行。
例如,给 DataFrame 中所有的元素添加值 2。然后,
adder function
adder 函数将两个数字值作为参数添加,并返回和。
def adder(ele1,ele2):
return ele1+ele2
我们现在将使用自定义函数对 DataFrame 执行操作。
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
让我们看一下完整的程序 −
import pandas as pd
import numpy as np
def adder(ele1,ele2):
return ele1+ele2
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print df.apply(np.mean)
它的 output 如下所示 −
col1 col2 col3
0 2.176704 2.219691 1.509360
1 2.222378 2.422167 3.953921
2 2.241096 1.135424 2.696432
3 2.355763 0.376672 1.182570
4 2.308743 2.714767 2.130288
Row or Column Wise Function Application
任意函数可以使用 apply() 方法沿 DataFrame 或 Panel 的轴应用,该方法与描述性统计方法类似,接受可选的 axis 参数。默认情况下,操作按列执行,将每一列视为类似数组。
Example 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print df.apply(np.mean)
它的 output 如下所示 −
col1 -0.288022
col2 1.044839
col3 -0.187009
dtype: float64
通过传递 axis 参数,可以按行执行操作。
Element Wise Function Application
并非所有函数都可以向量化(既不能返回另一个数组的 NumPy 数组,也不能返回任何值),DataFrame 上的 applymap() 方法和 Series 上的 analogously map() 方法接受任何 Python 函数,该函数取单个值并返回单个值。