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

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

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

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

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

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

【问题讨论】:

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

标签: python pandas numpy dataframe dictionary


【解决方案1】:

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

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

【讨论】:

  • 我试过 to_dict 很慢。尝试手动方式,有点快但仍然很慢。 Iterow 正如我所说,循环 df 非常慢。
  • 尝试 .apply() 将某些函数应用于列中的所有行。我不知道有比 .to_dict() 更快的方法转换为 dict
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 2014-06-10
相关资源
最近更新 更多