Python 3.x 慢循环聚合行和列

Python 3.x 慢循环聚合行和列,python-3.x,pandas,Python 3.x,Pandas,我有一个DataFrame,其中一列名为“UserNbr”,另一列名为“Spclty”,由如下元素组成: [['104', '2010-01-31'], ['215', '2014-11-21'], ['352', '2016-07-13']] {'104': '2010-01-31', '215': '2014-11-21', '352': '2016-07-13'} 其中列表中可以有0个或多个元素 一些UserNbr键出现在多个行中,我希望将每个这样的组折叠成一行,这样“Spclty”就

我有一个DataFrame,其中一列名为“UserNbr”,另一列名为“Spclty”,由如下元素组成:

[['104', '2010-01-31'], ['215', '2014-11-21'], ['352', '2016-07-13']]
{'104': '2010-01-31', '215': '2014-11-21', '352': '2016-07-13'}
其中列表中可以有0个或多个元素

一些UserNbr键出现在多个行中,我希望将每个这样的组折叠成一行,这样“Spclty”就可以包含上面所示列表中的所有唯一dict

为了节省附加到数据帧的开销,我将每个输出行附加到一个列表,而不是数据帧

我的代码正在运行,但在0.70万行输入上运行需要几个小时。(事实上,我从来没能让我的笔记本电脑打开足够长的时间,让它完成执行。)

是否有更好的方法聚合到这样的结构中,可以使用提供更多数据重塑选项的库,而不是在UserNbr上循环?(在R中,我使用data.table和dplyr库。)

到dict的转换消除了行之间重复的特殊性,在输出中,Spclty值应如下所示:

[['104', '2010-01-31'], ['215', '2014-11-21'], ['352', '2016-07-13']]
{'104': '2010-01-31', '215': '2014-11-21', '352': '2016-07-13'}

除了可能有比任何对应输入行中的键值对更多的键值对(由UserNbr聚合而成)。

我收回这个问题

我曾希望有一种有效的方法将groupby与其他东西结合使用,但我没有发现任何像这样具有复杂数据结构的示例,也没有收到任何指导

对于那些在Python中遇到非常缓慢的聚合问题的人,我建议升级到PySpark。我现在正在用Databricks笔记本解决这个问题,并在pyspark.sql.window函数方面取得了进展。(现在,运行测试只需要几分钟,而不是几个小时!)

部分解决方案如下所示:


离题,但还有什么比在没有解释的情况下否决一个问题更无用的吗?我还没有否决,但你可以在发布问题之前对此进行调查。因此,它不是用于codereview或代码编写服务。谢谢,Zanshin——但这不是一个容易适应该框架的问题。谢谢,Zanshin——但这不是一个容易适应该框架的问题。首先,我的代码可以工作——太慢了。其次,如果我创建一个“最小”的示例,它将无法证明任何东西,因为没有足够的数据来测试这个问题。第三,我通过对问题和我的方法的透彻描述来解决“完整”问题。第四,我认为我们不需要“可验证的”,因为同样,我的代码是有效的,并且正确的测试需要太多的数据。我的问题是,我看不出哪种结构、转换或分配会产生这么多的开销。另外,那些没有解释他们想要达到什么目的的人通常会被回复者要求这样做。正如我所提到的,我避免了串行地附加到数据帧,因为我认为将其添加到列表会很快。我的执行时间似乎随着输入行的数量呈指数增长,但我不明白为什么。