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