2013-08-06 163 views
8

與set_index工作使用導入CSV文件,我索引這樣的數據幀...在熊貓數據幀

rdata.set_index(['race_date', 'track_code', 'race_number', 'horse_name']) 

這就是數據幀的部分看起來像......

race_date track_code race_number horse_name   work_date work_track 
2007-08-24 BM   8   Count Me Twice  2007-05-31   PLN 
            Count Me Twice  2007-06-09   PLN 
            Count Me Twice  2007-06-16   PLN 
            Count Me Twice  2007-06-23   PLN 
            Count Me Twice  2007-08-05   PLN 
            Judge's Choice  2007-06-07   BM 
            Judge's Choice  2007-06-14   BM 
            Judge's Choice  2007-07-08   BM 
            Judge's Choice  2007-08-18   BM 

爲什麼'horse_name'這一列沒有像日期,賽道和比賽那樣分組?也許是由設計決定的,因此如何通過競爭來分割這個較大的DataFrame以使其具有以'horse_name'作爲其索引的新DataFrame?

+0

看起來像一個錯誤,錯誤報告的正確位置是[在github上](https://github.com/pydata/pandas/issues):)很好的發現! –

+1

這個問題似乎是脫離主題,因爲它是一個錯誤報告。 –

回答

10

這不是一個錯誤。這正是它打算如何工作。

DataFrame必須顯示其數據中的每一項。所以如果指數有一個級別,那麼這個級別就會完全展開。如果它有兩個級別,第一級將被分組,第二級將被完全擴展,如果它具有樹級別,前兩個將被分組,第三個將被擴展,依此類推。

所以這就是爲什麼馬名不分組的原因。你如何能夠看到在數據幀中的所有項目,如果你組也由馬名:)

嘗試這樣做:

rdata.set_index(['race_date', 'track_code', 'race_number']) 

或:

rdata.set_index(['race_date', 'track_code']) 

你會看到索引的最後一級始終完全展開,以便您可以查看DataFrame中的所有項目。

+0

這工作。謝謝! – TravisVOX