2016-05-12 47 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()