2014-11-03 39 views
0
Category      Cat2 average 
Beauty/Wellness/Healthcare 1  54.50 
           2  53.25 
           3  48.00 
           4  57.57 
           5  51.33 
           6  18.50 
           7  16.00 

我有一個數據框,多級。我需要將第二級轉換爲簡單的列。可能嗎? unstacking創建第1列到第7列。將子水平轉換爲單列

作爲補充:是否可以重命名組名稱(級別0和1)?

回答

2

df.reset_index(['Cat2'])會將Cat2索引轉換爲列。

例如,

In [38]: df 
Out[38]: 
            average 
Category      Cat2   
Beauty/Wellness/Healthcare 1  54.50 
           2  53.25 
           3  48.00 
           4  57.57 
           5  51.33 
           6  18.50 
           7  16.00 

In [39]: df.reset_index(['Cat2']) 
Out[39]: 
           Cat2 average 
Category          
Beauty/Wellness/Healthcare  1 54.50 
Beauty/Wellness/Healthcare  2 53.25 
Beauty/Wellness/Healthcare  3 48.00 
Beauty/Wellness/Healthcare  4 57.57 
Beauty/Wellness/Healthcare  5 51.33 
Beauty/Wellness/Healthcare  6 18.50 
Beauty/Wellness/Healthcare  7 16.00 

要更改指數級別名稱,使用df.index.names = ['foo', 'bar']

In [48]: df.index.names = ['foo', 'bar'] 

In [49]: df 
Out[49]: 
            average 
foo       bar   
Beauty/Wellness/Healthcare 1  54.50 
           2  53.25 
           3  48.00 
           4  57.57 
           5  51.33 
           6  18.50 
           7  16.00 
+0

TNX。但是,df.reset_index(['Cat2'])以某種方式在'df.index'中創建索引的重複項,因此無法按類別重新組合。 – NoIdeaHowToFixThis 2014-11-03 20:43:17

+0

請發佈'df.info()'和'df.index'。 – unutbu 2014-11-03 20:45:46

+0

Index([u'Beauty/Wellness/Healthcare',u'Beauty/Wellness/Healthcare',u'Beauty/Wellness/Healthcare',u'Beauty/Wellness/Healthcare',u'Beauty/Wellness/Healthcare',u 'Beauty/Wellness/Healthcare',u'Beauty/Wellness/Healthcare',u'Food&Drink',u'Food&Drink',u'Food&Drink',u'Food&Drink',u'Food&Drink ',u'Food&Drink',u'Other',u'Other',u'Other',u'Other',u'Other',u'Other',u'Other',u'Other',u 'Other',u'Other'],dtype ='object') – NoIdeaHowToFixThis 2014-11-03 20:47:20