Python中有一个函数可以执行R中的Mapply吗?
基本上,我有一个函数的n个输入的列表(每个条目是一个数据框)和相应的参数列表(每个列表的长度为n)。
在每个参数列表中,每个参数的位置都对应于输入在输入列表中的位置。
现在,我希望以输入方式的确切顺序获得结果,可以是列表的形式,每个元素都有一个数据框(或矩阵或其他),或者仅一个数据框附加了所有结果。在R中使用Mapply可以轻松实现这一点,但是在python中,我没有运气找到能完成此功能的函数。
我没有尝试过,但是我想到的解决方案之一是pd.concat所有列表(包括输入列表和参数列表),我逐列进入一个大列表,并将函数应用于我所在的每一行'将提取该行的每个元素以填充该函数。
这可能有用,但是如果实际上有单行解决方案,那看起来会很愚蠢。
这就是我如何处理R中的问题:
result <- mapply(FUN = function(input, parameter1, parameter2) function_of_interest(input, parameter1, parameter2), input = input_list, parameter1 = parameter1_list, parameter2 = parameter2_list,... )
答案 0 :(得分:1)
如果我正确理解了这个问题,那么R中的mapply
示例如下:
A <- c(1, 2, 3)
B <- c(2, 3, 4)
my_multiplication <- function(x,y){return(x*y)}
C <- mapply(my_multiplication, A, B)
可以大致等同于以下Python代码:
a = [1, 2, 3]
b = [2, 3, 4]
def my_multiplication(x, y):
return x * y
c = map(my_multiplication, a, b)
c
现在就是所谓的iterator。如果我过于简化,可以将c
视为返回的函数:
a[0] * b[0]
首次通话,
a[1] * b[1]
在第二次通话时,
a[2] * b[2]
在第三次(也是最后一次)通话中
i = 0
message = 'a[{}] * b[{}] = {} * {} = {}'
for result in c:
print(message.format(i, i ,a[i], b[i], result))
i += 1
打印
a[0] * b[0] = 1 * 2 = 2
a[1] * b[1] = 2 * 3 = 6
a[2] * b[2] = 3 * 4 = 12