【发布时间】:2015-02-19 19:52:29
【问题描述】:
我在数据框中有股票数据,其列标题如 AAPL、AAPL_ma、MSFT、MSFT_ma - 并且希望以某种方式将数据放入面板中,其中项目 = 股票代码(因此 AAPL 项目将包括 AAPL 和 AAPL_ma)。
我是 pandas 的新手,正在努力制定一个连贯的计划。我不知道我是否应该:(1)使用 MultiIndex 功能,(2)循环遍历列表以将数据写入名为股票代码的新 df,或(3)按符号拆分现有数据帧(例如,' 'AAPL_ma' 中的 AAPL')。
任何方向都将不胜感激。提前致谢!
更新:
根据 EdChum 的建议,我正在使用以下内容以字符串形式为我的 df 创建列标题的字典。不确定这是否是您的意思 - 正在进行中。
y = [df['Date']]
dict_stocks = {}
# create dict for multiindexing
for stock in list_stocks:
i=0
x=[df[stock]]
for heading in list_headings:
data_series = df[stock + list_headings[i]]
i = i + 1
x.append(data_series)
dict_stocks[stock] = y + x
上面产生了一个df的字典,尽管轴不是我所期望的。但是,我没有运气:
my_panel = pd.Panel(df)
my_panel = pd.Panel.from_dict(dict_stocks)
产生错误:
--PandasError: Panel 构造函数没有正确调用!
--AttributeError: 'list' 对象没有属性 'shape'
【问题讨论】:
-
既然您已经拥有这些列,为什么不直接列出它们:
list(df)? -
按符号进行多重索引对我来说很有意义 - 所以 AAPL、AAPL_chg 和 AAPL_ma 都属于 AAPL。但我不知道如何使用 list(df) 执行。
-
那为什么不使用符号作为键来制作 dfs 的字典
-
感谢 EdChum 的意见。仍在为大局而努力,但朝着正确的方向迈出了一步。
-
是的,我认为是这样的
标签: python pandas split dataframe multi-index