为每个0级索引单独重置1级索引

时间:2018-03-05 18:41:49

标签: python pandas dataframe indexing

说我有以下DataFrame:

                    col1    col2
index0    index1
A         0           10     nan
          1           11      31
          2           12      32
B         0           20     nan
          1           21      41
          2           22      42

我现在要删除所有带有nans的行,保留0级索引,然后重置每个1级索引,使它们从0开始:

>>> df.dropna(inplace=True)

                    col1    col2
index0    index1
A         1           11      31
          2           12      32
B         1           21      41
          2           22      42

>>> somehow reset the level 1 indexes

                    col1    col2
index0    index1
A         0           11      31
          1           12      32
B         0           21      41
          1           22      42

1 个答案:

答案 0 :(得分:0)

IIUC

s=df.dropna()
s.assign(index1=s.groupby(level=0).cumcount()).set_index('index1',append=True).reset_index(level=1,drop=True)
Out[1210]: 
               col1  col2
index0 index1            
A      0         11  31.0
       1         12  32.0
B      0         21  41.0
       1         22  42.0