优化数据帧上的行迭代

时间:2019-06-03 12:15:48

标签: python-3.x pandas performance loops

在这里查看了几个答案之后,我想知道如何最好地处理以下问题: 作为输入,我有一个数据框,其中每一行包含有关产品的信息:其参考,费率等。

根据这些信息,我为每行构造一个新的数据框:每个新数据框(1个乘积(原始数据框中有1行)= 1个数据框)根据该行中的信息包含了新的行数:例如,如果“ TYPE”列的值为“ A”,则新数据框将有10行,每行对应于某个日期。就我而言,这些信息不仅适用于复杂的公式,而且适用于具有条件和不同情况(不仅是一系列操作)的函数。

我目前正在执行以下操作:

for index, row in original_df.iterrows():
    product_ref = row[REF]
    ...
    new_df = function(product_ref,...)
    res.append(new_df)
return pandas.concat(res)

从我收集的有关Pandas文档的信息和一些答案来看,这是在Pandas中工作的最糟糕的方法之一。

我可以将iterrows转换为itertuples,这将提高性能,因为我不会构造Series而是将其命名为Tuples。

一种不同的解决方案也将是这样应用我的功能:

res = original_df.apply(function,axis=1)

这将返回一系列数据帧(如我的function返回数据帧)。

在应用产生复杂结果(数据框对象)的函数和遍历命名元组以构造数据框并将其存储在列表中之间,首选的方法(如执行最佳方法)是什么? / strong>

我将同时实现这两个选项并尝试自己看看,但是如果有人对改进此伪代码有任何信息或建议,请与我们分享。

0 个答案:

没有答案