我需要将不同的函数合并为一个,并在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
上面的函数会给我一个用逗号分隔的单列中的所有值。有没有办法以这样的方式应用每一个?它们来自不同的列?
答案 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)