如何在Pandas中重新采样字典中的数据框(Yahoo数据)?

1 投票
1 回答
1313 浏览
提问于 2025-04-28 01:01

我想从雅虎财经下载一堆数据,把它们放到一个字典里,然后做各种处理。首先,我想把数据重新采样到“季度最后一个工作日”或者“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)

我就能得到想要的结果,但问题是我想对多个数据框执行这个过程。所以问题出在应用这个函数的循环上。

谢谢

暂无标签

1 个回答

2

在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)

撰写回答