【发布时间】: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