Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中map函数背后的技巧是什么?_Python_Optimization_Map_Pandas - Fatal编程技术网

Python中map函数背后的技巧是什么?

Python中map函数背后的技巧是什么?,python,optimization,map,pandas,Python,Optimization,Map,Pandas,我有一个数据帧和一个N个参数的函数。现在,对于每一行,我想使用N列中的值作为函数的输入,并将函数的输出保存在另一列中。我可以直接做到: inds = [] d = {} for ind, row in df.iterrows(): inds.append(ind) d[ind] = my_func(row.col1, row.col2, row.col3) df['out_col'] = pandas.Series(d, index = inds) 但是,使用以下方法要快得多: d

我有一个数据帧和一个N个参数的函数。现在,对于每一行,我想使用N列中的值作为函数的输入,并将函数的输出保存在另一列中。我可以直接做到:

inds = []
d = {}
for ind, row in df.iterrows():
   inds.append(ind)
   d[ind] = my_func(row.col1, row.col2, row.col3)
df['out_col'] = pandas.Series(d, index = inds)
但是,使用以下方法要快得多:

df['out_col'] = map(my_func, df.col1, df.col2, df.col3)

为什么它比简单的解决方案快得多。映射函数使用了什么技巧使速度如此之快?

当使用df.itertuples而不是df.iterrows时,您可以比较速度吗?df['out\u col']=mapmy\u func,row.col1,row.col2,row.col3的右侧是一个依赖于行的值。但将其赋值给df['out_col']意味着整个列将得到相同的值。因此,它不会执行与d[ind]=my_funcrow.col1,row.col2,row.col3后跟df['out\u col']=pandas.seried,index=inds在循环外相同的操作。我不认为你是在比较苹果和苹果。@unutbu,我已经编辑了我的问题。一个数据框是。如果您对整列而不是逐行进行操作,计算速度通常会更快。不是map快,而是ItErrors慢。您可以使用itertuples,并将以几乎与map一样快的速度获得某些内容,但正如@unutbu所说的,您应该尝试看看是否可以在整个列上应用此函数。