Python大熊猫 - 尝试将df的dict放入面板(或将df项循环到面板中)

时间:2015-02-19 19:52:30

标签: python pandas split dataframe multi-index

我在数据框中有库存数据,其列标题如AAPL,AAPL_ma,MSFT,MSFT_ma - 并希望以某种方式将数据放入带有items = stock符号的面板中(因此AAPL项目将包括AAPL和AAPL_ma)。

我是大熊猫的新手,我正在努力想出一个连贯的计划。我无法弄清楚我是否应该:(1)通过MultiIndex功能,(2)循环遍历列表以将数据写入新的df(称为股票代码),或(3)拆分现有数据帧用符号表示(例如,' AAPL'在AAPL_ma'中)。

任何方向都会受到青睐。提前谢谢!

更新:

在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:未正确调用面板构造函数!

- AttributeError:' list'对象没有属性'形状'

1 个答案:

答案 0 :(得分:1)

你最容易获得承诺的土地的方法是创建一个多索引字典,其中的键是(aapl,aapl)和(aapl,aapl_ma)等元组,然后在字典上执行pandas.Dataframe()。 http://pandas.pydata.org/pandas-docs/dev/advanced.html

如果你想做一个面板我会建议EdChums回答创建一个数据帧的dict,键是符号,然后你可以使用该dict创建一个带pandas.Panel()的面板。