在 pandas 的数据框中同时进行多个分组计算并取回这些结果是否可行?所以,我想计算以下几组数据帧并一个接一个地得到这些结果,最后将它们合并到一个数据帧中。
df_a = df.groupby(["state", "person"]).apply(lambda x: np.mean(x["height"]))
df_b = df.groupby(["state", "person"]).apply(lambda x: np.mean(x["weight"]))
df_c = df.groupby(["state", "person"]).apply(lambda x: xp["number"].sum())
接着,
df_final = merge(df_a, df_b) # omitting the irrelevant part
但是,据我所知,multiprocessing
这里的那些功能不适合我的需求,因为它看起来更像是同时运行多个不返回内部创建的局部变量的函数,而只是在函数中打印一些输出(例如经常使用的is_prime
函数),或者同时运行具有不同参数集的单个函数(例如map
函数 in multiprocessing
),如果我理解正确的话(我不确定我理解正确,如果我错了,请纠正我! )。
但是,我想要实现的只是同时运行这三个(实际上是更多)并最终将它们合并在一起,一旦数据帧上的所有计算都成功完成。Go
我假设在(goroutines
和)中实现的那种功能channels
,可能是分别创建每个函数,一个接一个地同时运行它们,等待它们全部完成,最后将它们合并在一起。
那么如何用 Python 编写呢?我阅读了、 和的文档multiprocessing
,但所有这些对我来说都太难以捉摸了,我什至不明白我是否可以从一开始就利用这些库......threading
concurrent.futures
(为了简洁起见,我把代码写得很精确,实际代码更复杂,所以请不要回答“是的,你可以用非并发的方式写成一行”之类的。)
谢谢。