Python中使用Quandl API循环处理多个DataFrame的方法
如何用循环对多个Quandl获取的DataFrame执行相同数据处理?
嘿,我来帮你搞定这个问题!你遇到的AttributeError是因为代码里犯了个小错误——你把单个DataFrame又塞进了列表里,导致后续调用reset_index()时,操作的对象变成了列表而不是DataFrame,列表当然没有这个方法啦。
先看你原来的问题代码:
dfd = quandl.get("FRED/DEXBZUS") dfe = quandl.get("ECB/EURBRL") df=[dfd,dfe] for i in df: df1=[i] # 这里把单个DataFrame变成了列表! df1= df1.reset_index() # 列表没有reset_index方法,报错就出在这
正确的写法有两种,看你需求选:
方法1:创建新列表存储处理后的结果(推荐,不修改原数据)
import quandl # 先获取所有需要的DataFrame,放进列表 df_list = [ quandl.get("FRED/DEXBZUS"), quandl.get("ECB/EURBRL") ] # 初始化空列表存处理后的DataFrame processed_data = [] for single_df in df_list: # 直接对每个DataFrame执行reset_index,然后加入新列表 cleaned_df = single_df.reset_index() processed_data.append(cleaned_df) # 现在processed_data里就是两个处理好的DataFrame了 # 比如processed_data[0]就是处理后的FRED/DEXBZUS数据
方法2:原地修改原列表(直接覆盖原数据)
如果不需要保留原始的DataFrame,可以直接在原列表上修改:
import quandl df_list = [ quandl.get("FRED/DEXBZUS"), quandl.get("ECB/EURBRL") ] # 通过索引遍历,直接替换原列表里的元素 for idx in range(len(df_list)): df_list[idx] = df_list[idx].reset_index() # 现在df_list里的每个元素都是处理好的DataFrame了
核心问题就是别把单个DataFrame包装成列表,直接对循环里拿到的每个DataFrame对象调用处理方法就行啦!
内容的提问来源于stack exchange,提问作者Cesar
相关产品推荐
相关产品推荐

