如何将存储DataFrame的字典合并为同索引的统一宽表?
解决方案
你存储的所有DataFrame索引完全一致,直接使用pandas的concat方法沿列方向拼接即可得到目标宽表。
注意事项
不要用list作为变量名,它是Python内置关键字,会覆盖原有功能,建议改为ticker_list这类自定义名称。
核心拼接代码
import pandas as pd # 沿列方向拼接字典中所有DataFrame merged_df = pd.concat(dataframe_collection.values(), axis=1) # 给索引重命名为date,匹配预期输出格式 merged_df.index.name = 'date'
优化后完整流程代码
你原有代码可以简化,避免列顺序变化导致删错数据的风险:
import pandas as pd dataframe_collection = {} # 替换为你实际的标的列表 ticker_list = ["ACC", "HINDUNILVR", "LT"] for ticker in ticker_list: ohlc = fetchOHLC(ticker, "day", 5) # 直接生成对应ticker命名的归一化列,不需要先建base列再重命名 ohlc[ticker] = ohlc.close / ohlc.close.iloc[0] # 直接保留需要的单列,比按位置删多列更稳妥 ohlc = ohlc[[ticker]] dataframe_collection[ticker] = ohlc # 拼接得到最终宽表 merged_df = pd.concat(dataframe_collection.values(), axis=1) merged_df.index.name = 'date'
内容的提问来源于stack exchange,提问作者ANen
相关产品推荐
相关产品推荐

