我在这里向经验丰富的用户寻求建议。我没有遇到“我的代码无法正常工作,您能帮我解决这个问题吗?”之类的问题。而是出现“我想这样做,我应该怎么做?”之类的问题。 在来到这里问这个问题之前,我开始做一些研究,但是我找不到任何适合我情况的东西(最后列出了我在做一些研究时得到的想法)。
在描述自己的情况时,我尽量保持清晰,但不要犹豫,向我询问更多精确度。
话虽如此,这是主要话题。
我有两个数据框,一个是data
,其中包含我的实验数据,另一个是reference
,其中包含我的参考数据。我有一个match_function
,可让我将data
中的行与reference
中的行进行比较,以确定我的实验数据是否可以与我拥有的参考数据匹配,并且返回一个概括结果的数据框。到目前为止一切顺利。
但是,数据中的每一行只能与reference
中的几行匹配(比方说,参考的35K行中的1-50行之间)。因此,我想避免在我知道永远不会匹配的行之间进行比较。我做了一些测试:
reference
数据帧(35K行)进行匹配,则大约需要1分钟30秒。因此,我们的想法是根据一些特征,将我的数据帧分成“块”,这些特征可以告诉我它们可能与哪些reference
行匹配。而不是一次完成所有操作:
match_function(data, reference)
>>> match_data
我可以在每个数据框的“块”之间进行比较,以便将它们进行比较,然后将结果数据框串联起来。
match_function(data_a, reference_a)
>>> match_data_a
match_function(data_b, reference_b)
>>> match_data_b
match_function(data_c, reference_c)
>>> match_data_b
match_data = pd.concat([match_data_a, match_data_b, match_data_c])
现在我想可以做到这一点,方法是先拆分每个数据帧,然后使用嵌套的for循环遍历它们,以便将它们用作我的函数中的输入。但是我认为这会相当慢。因此,我不想串联进行每个比较,而是想通过并行进行比较来加快整个过程。
现在,如果我错了,请纠正我,但是如果我们假设整个过程将花费1h进行意甲中的所有比较,那么如果我可以同时进行两个比较,则将“仅”花费30分钟。同时。如果我可以同时进行4次比较,则为15分钟,依此类推。
在开始提问之前,我开始做一些研究,但根据我的理解,找不到适合我情况的答案
在python中进行多重处理非常容易。但是我找不到一个示例,其中每个过程中的“输入”是不同的数据帧。也许map()
可以通过在拆分后将不同数据帧的名称传递给它来实现?
Dask允许通过首先将数据帧分成给定大小的块来进行并行计算,然后每个进程负责对一个块进行计算,并在处理每个块时返回结果。基本上看起来像我想做的,但是我需要“控制”如何将数据帧拆分为较小的数据帧。
如果这不是问这样的问题的好地方,我事先表示歉意,如果您能引导我去一个更合适的地方讨论这个问题,我将不胜感激。
感谢您的阅读。