2017-03-03 22 views
-3

我的目標是按組爲每個組獲得相同的行數。本來,按後會得到這樣的:填寫行以獲得組合後的每個組中的相同數量。熊貓

 count mean std  min 25%  50%  75% max 
X Y       
56 2 5  25200 21  0.0 20000.0 20000.0 26000.0 60000.0 
    8 1.0  20000 NaN  20000 20000 20000 20000 20000.0 
952 2 25.0 216132 239321 0  35000 93100 55000 650000.0 
233 2 1.0  0  NaN  0  0.0  0.0  0.0  0.0 
335 2 9.0  853  60018 0.0  35000 98000 130000 150000.0 
    6 11.0 3409 4943 0.0  0.0 0.0  7750.0 11000.0 

,並滿足我的目標,我應該得到如下。

 count mean std  min 25%  50%  75% max 
X Y       
56 1 0  0  NaN  NaN NaN  NaN  NaN NaN  
    2 5  252 21  0.0 20000.0 20000.0 26000.0 60000.0 
    3 0  0  NaN  NaN NaN  NaN  NaN NaN 
    4 0  0  NaN  NaN NaN  NaN  NaN NaN 
    5 0  0  NaN  NaN NaN  NaN  NaN NaN 
    6 0  0  NaN  NaN NaN  NaN  NaN NaN 
    7 0  0  NaN  NaN NaN  NaN  NaN NaN 
    8 1.0  20000 NaN  20000 200 20000 20000 20000.0 
952 1 0  0  NaN  NaN NaN  NaN  NaN NaN 
    2 25.0 216132 239 0  35000 93100 55000 650000.0 
    3 0  0  NaN  NaN NaN  NaN  NaN NaN 
    4 0  0  NaN  NaN NaN  NaN  NaN NaN 
    5 0  0  NaN  NaN NaN  NaN  NaN NaN 
    6 0  0  NaN  NaN NaN  NaN  NaN NaN 
    7 0  0  NaN  NaN NaN  NaN  NaN NaN 
    8 1.0  0  NaN  0  0   0  0  0 

回答

0

我認爲你可以使用reindex通過MultiIndex.from_product

#if need in second level only all unique values from all second levels 
mux = pd.MultiIndex.from_product([df.index.get_level_values('X').unique(), 
            df.index.get_level_values('Y').unique()]) 

#if need range from 1 to 8 (1,2,3,..8) 
mux = pd.MultiIndex.from_product([df.index.get_level_values('X').unique(), 
            np.arange(1,9)]) 

#if need range starts with min and end max value of all levels 
idx = df.index.get_level_values('Y') 
mux = pd.MultiIndex.from_product([df.index.get_level_values('X').unique(), 
            np.arange(idx.min(),idx.max())]) 


df = df.reindex(mux) 
print (df) 
相關問題