vectorize向量化函数对DataFrame中值进行复杂运算

前言:在pandas的DataFrame中某一行或某一列的值均为向量,而普通函数只能接受固定值,或者将DataFrame的整行整列一起进行运算,而不能进行复杂运算,在批量处理DataFrame数据时,需要用到向量函数对某行或某列中的每个元素进行逐一判断后再计算,因此要将函数向量化。

向量化函数的方式:

① 新函名 = numpy.vectorize(原函数名)  注:函数名不带括号“()”

② 通过装饰器 @numpy.vectorize 装饰函数

例:

import numpy as np
import pandas as pd

table =pd.DataFrame([(1,2),
                     (3,4),
                     (5,6)],columns=['a','b'])

创建一个table(DataFrame对象)如下:

vectorize向量化函数对DataFrame中值进行复杂运算_第1张图片

采用第②种方式向量化一个函数sum_of_sqr(x,y)

        该函数用于求输入值x与y的平方和,当x的值为3时,结果返回空值

@np.vectorize
def sum_of_sqr(x,y):
    if x==3:
        return np.NaN
    else:
        return float(x**2+y**2)

 运行函数

sum_of_sqr(table['a'],table['b'])

输出结果:

vectorize向量化函数对DataFrame中值进行复杂运算_第2张图片

 同理,可以用第①种方式向量化函数

def sum_of_sqr(x,y):
    if x==3:
        return np.NaN
    else:
        return float(x**2+y**2)

sum_of_sqr_vec = np.vectorize(sum_of_sqr)
sum_of_sqr_vec(table['a'],table['b'])

输出结果:

vectorize向量化函数对DataFrame中值进行复杂运算_第3张图片

 

你可能感兴趣的:(python,numpy,数据分析)