完成这些任务的最快方法是啥?

Posted

技术标签:

【中文标题】完成这些任务的最快方法是啥?【英文标题】:What's the fastest way to do these tasks?完成这些任务的最快方法是什么? 【发布时间】:2020-09-18 12:35:33 【问题描述】:

我原来有一些时间序列数据,看起来是这样的,要做到以下几点:

    首先将其作为数据框导入 将日期列设置为日期时间索引 将移动平均线等一些指标添加为新列 做一些四舍五入(整列的值) 将一列向上或向下移动一行(只是为了操作数据) 然后将df转为list(因为我需要根据一些条件循环,比循环df要快很多,因为我需要速度) 但现在我想将 df 转换为 dict 而不是 list,因为我想保留列名,这样更方便

但现在我发现转换为 dict 比 list 花费的时间要长得多。即使我这样做manually而不是使用python内置方法。

我的问题是,有没有更好的方法呢?也许不首先作为数据框导入?并且仍然能够做到第 2 点到第 5 点?最后我需要转换为允许我执行循环的dict,将列名保留为键?谢谢。

附: dict应该是这个样子,格式类似于df,每一行基本上都是日期和对应的数据。

【问题讨论】:

dict应该是什么样子的?一个字典,键是列名,值是完整的列?还是一个字典列表,每行一个? @MichaelButscher 帖子已更新,应该是这样的,谢谢。 熊猫数据框有“to_dict”方法。 @MichaelButscher 正如我所说,我尝试了内置的 to_dict() 和手动方式。手动比 to_dict 快,但仍然很慢。 你需要字典做什么?也许named tuples 可以替代(但我不知道它们是否真的更快)。 【参考方案1】:

关于#7:如果要转换成字典,可以使用df.to_dict()

关于第 6 项:您不需要将 df 转换为列表或循环遍历它:Here are better options。寻找第二个答案(上面写着 DON'T

【讨论】:

我试过 to_dict 很慢。尝试手动方式,有点快但仍然很慢。 Iterow 正如我所说,循环 df 非常慢。 尝试 .apply() 将某些函数应用于列中的所有行。我不知道有比 .to_dict() 更快的方法转换为 dict

以上是关于完成这些任务的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UIPopoverController 的最快方法是啥?

获取计算列表中前 n 个项目的最快方法是啥?

在 C# 中浏览 XML 文件的最快方法是啥?

从 HBase 中提取数据的最快方法是啥

在 C# 中填充组合框的最快方法是啥? [关闭]

在本地安装和设置 TYPO3 的最快方法是啥?