【问题标题】:How to resample a dictionary of dataframes (Yahoo Data) in Pandas?如何在 Pandas 中重新采样数据框字典(雅虎数据)?
【发布时间】:2014-10-16 22:15:16
【问题描述】:

我想从 yahoo Finance 下载一堆数据,将其放入字典中,然后用它做各种事情。首先将其重新采样为“季度最后一天”或“BQ - 业务季度结束频率”:

import pandas as pd
import pandas.io.data as pdd

x = pdd.DataReader('VBK', data_source='yahoo', start='2004/1/30')
y = pdd.DataReader('IWM', data_source='yahoo', start='2000/5/26')
z = {'x': x, 'y': y}

conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume': 'sum', 'Adj Close': 'last'}
for key, df in z.iteritems():
    df.resample('BQ', how=conversion)

但是,什么也没有发生。但是,如果我这样做:

 test = x.resample('BQ', how=conversion)

我得到了想要的结果,但问题是我想为多个数据帧执行此过程。所以问题出在应用函数的 for 循环中。

谢谢

【问题讨论】:

  • @Paul H 我在原始问题中犯了一个大错误。但是,问题仍然存在。问题在于字典中的迭代。
  • 是什么让你这么说?重新采样适用于单个数据框这一事实是否会使您的观点无效?
  • 在 python 3 中,我得到的错误是字典没有 iteritems 方法。
  • @PaulH 感谢您的意见。但是我可以使用与 dict 相同的转换来运行重新采样。它工作正常。但是对于单个df。它一直被这样使用看到这个食谱stackoverflow.com/questions/14861023/resampling-minute-data
  • 好吧,当我纠正你的循环时,它对我有用。是什么让你认为它不起作用?您不会将结果重新分配回z,因此整个过程将非常短暂。您可以将最后一行替换为 z[key] = df.resample('BQ', how=conversion) 以保存结果。

标签: python pandas grouping dataframe


【解决方案1】:

在 python 3 中,没有字典的 iteritems 方法。您也没有保存重采样方法的输出。

这对我有用:

import pandas as pd
import pandas.io.data as pdd

x = pdd.DataReader('VBK', data_source='yahoo', start='2004/1/30')
y = pdd.DataReader('IWM', data_source='yahoo', start='2000/5/26')
z = {'x': x, 'y': y}

conversion = {
    'Open': 'first', 
    'High': 'max', 
    'Low': 'min', 
    'Close': 'last', 
    'Volume': 'sum', 
    'Adj Close': 'last'
}

for key, df in z.items():
    z[key] = df.resample('BQ', how=conversion)

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 2016-04-12
    • 2017-09-19
    • 1970-01-01
    • 2019-06-14
    • 2014-10-04
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多