Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 Lambda groupby运行并停止迭代_Python_Pandas_Lambda - Fatal编程技术网

Python Lambda groupby运行并停止迭代

Python Lambda groupby运行并停止迭代,python,pandas,lambda,Python,Pandas,Lambda,我编写了一个函数,我能够像这样成功地使用它: createdata(df) 结果是正确的。例如,输出按预期为数据框中的每一行包含一个结果行,并且计算是正确的。我的问题是,由于内存限制,我无法同时通过函数运行整个数据帧,因此我必须通过函数迭代发送数据帧 我无法将数据帧逐行发送到函数,因为该算法具有按组排序的特性。因此,我必须一次至少向函数发送一组数据。我尝试了groupby.apply,但由于apply在第一个组上两次调用函数,因此出现了意外结果。现在我用的是这样的lambda df.group

我编写了一个函数,我能够像这样成功地使用它:

createdata(df)
结果是正确的。例如,输出按预期为数据框中的每一行包含一个结果行,并且计算是正确的。我的问题是,由于内存限制,我无法同时通过函数运行整个数据帧,因此我必须通过函数迭代发送数据帧

我无法将数据帧逐行发送到函数,因为该算法具有按组排序的特性。因此,我必须一次至少向函数发送一组数据。我尝试了groupby.apply,但由于apply在第一个组上两次调用函数,因此出现了意外结果。现在我用的是这样的lambda

df.groupby(["x", "y"]).apply(lambda x: createdata(df))
有了这个,我得到了正确的计算结果,但我得到了每个输入行4行相同的输出。当它完成时,我也会得到停止迭代异常


在不深入了解函数细节的情况下,我是否可以在每次只在一组数据帧上迭代函数的方法中纠正某些错误

我对熊猫一无所知,但快速浏览一下您的代码和文档,我认为您希望将
x
传递给
createdata
,而不是
df

 df.groupby(["x", "y"]).apply(lambda x: createdata(x))
另外,请注意,根据文档:

在当前实现中,apply在第一次调用func两次 组来决定是否可以采用快速或慢速代码路径。这个可以 如果func有副作用,则会导致意外行为 第一组服用两次