我的目标是按组获取每组的相同行数。最初,在小组之后会得到这样的东西:
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 :(得分: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)