2016-05-12 40 views
0

dataPanel上的熊猫我有一个看起来像这样的数据帧:数据帧到/ Python的

Name Permits_13 Score_13 Permits_14 Score_14 Permits_15 Score_15 
0 P.S. 015 ROBERTO CLEMENTE 12.0 284 22 279 32 283 
1 P.S. 019 ASHER LEVY 18.0 296 51 301 55 308 
2 P.S. 020 ANNA SILVER 9.0 294 9 290 10 293 
3 P.S. 034 FRANKLIN D. ROOSEVELT 3.0 294 4 292 1 296 
4 P.S. 064 ROBERT SIMON 3.0 287 15 288 17 291 
5 P.S. 110 FLORENCE NIGHTINGALE 0.0 313 3 306 4 308 
6 P.S. 134 HENRIETTA SZOLD 4.0 290 12 292 17 288 
7 P.S. 137 JOHN L. BERNSTEIN 4.0 276 12 273 17 274 
8 P.S. 140 NATHAN STRAUS 13.0 282 37 284 59 284 
9 P.S. 142 AMALIA CASTRO 7.0 290 15 285 25 284 
10 P.S. 184M SHUANG WEN 5.0 327 12 327 9 327 

,我想将它转换成一个数据面板结构作为回答这个问题Fixed effect in Pandas or Statsmodels,这样我就可以使用具有固定效果的PanelOLS。

我第一次尝试做这样的转换:

df1 = df.ix[:,['Permits_13', 'Score_13']].T 
df2 = df.ix[:,['Permits_14', 'Score_14']].T 
df3 = df.ix[:,['Permits_15', 'Score_15']].T 
pf = pandas.Panel({'df1':df1,'df2':df2,'df3':df3}) 

但是,它似乎并没有被正确的方法,一旦我有没有关于时间的信息。在这里,以13,14和15结尾的列代表2013年,2014年和2015年的观察次序。

我是否必须为原始数据中的每一行创建一个数据框?

这是我第一次尝试使用熊猫,任何帮助将不胜感激。

回答

0

DataFrame.to_panel()的文档字符串表示:

变换长(堆叠)格式(数据帧)到宽(3D,面板) 格式。

当前DataFrame的索引必须是2级MultiIndex。 这可以在以后推广

因此,这意味着你需要做的:

  1. 堆栈的数据框(因为它是目前“宽”,而不是“长”)
  2. 选择两列谁可以唯一定义数据框的索引
  3. 设置这些列的索引
  4. 呼叫to_panel()

这就是:

df.stack().set_index(['first_col', 'other_col']).to_panel()