将不同的功能组合到一个Python中

时间:2014-03-14 10:04:01

标签: python function pandas apply

我需要将不同的函数合并为一个,并在main函数本身中使用apply函数(这些函数)。我的情况比较复杂,所以我将使用一个基本的例子。

假设我有一个由数字组成的数据。让我们称之为" MathData"。包含2个数字的列称为'数字'。

以下是我的个人职能:

def add(nm1,nm2):
    sum = nm1+nm2
    return sum
MathData['sum'] = Mathdata['digits'].apply(add) #gives me new column called "sum" with the sum of each observation in it.   

同样,

def diff(nm1,nm2):
    subtract = nm1-nm2
    return subtract

def mul(nm1,nm2):
    multiply = nm1 * nm2
    return multiply

def div(nm1,nm2):
    divide = nm1/nm2
    return divide


MathData['difference'] = Mathdata['digits'].apply(diff)
MathData['product'] = Mathdata['digits'].apply(mul)
MathData['quotient'] = Mathdata['digits'].apply(div)

所以我会得到不同的列,包括sum,diff,product,quot等 我希望所有这些都成为1个函数,每个值在不同的列中。

def mathop(nm1,nm2):
    sum = nm1+nm2
    diff = nm1-nm2
    mul = nm1*nm2
    div = nm1/nm2
    return sum,diff,mul,div

上面的函数会给我一个用逗号分隔的单列中的所有值。有没有办法以这样的方式应用每一个?它们来自不同的列?

1 个答案:

答案 0 :(得分:0)

我不知道pandas模块,但在纯Python中你可以这样做:

import operator
mathops = {'sum': operator.sum,
           'diff': operator.sub,
           'mul': operator.mul,
           'div': operator.div}

for op_name, op in mathops:
    MathData[op_name] = MathData['digits'].apply(op)