vectorize向量化函数对DataFrame中值进行复杂运算
Posted Logen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象)如下:
采用第②种方式向量化一个函数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'])
输出结果:
同理,可以用第①种方式向量化函数
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中值进行复杂运算的主要内容,如果未能解决你的问题,请参考以下文章
Spark / Hive / ClickHouse 向量化查询执行原理分析(Vectorization Query Execution)