简体   繁体   English

在多索引数据框中的每一行添加空行

[英]Add empty rows each certain rows in a multiindex data frame

I have a data frame like this我有一个这样的数据框

probe_names  PLAGL1  GRB10  MEST   H19  KCNQ1OT1  MEG3  MEG8  SNRPN  PEG3  \
Jemima   0     0.55   0.53  0.53  0.47      0.62  0.11  0.83   0.50  0.49   
        1     0.51   0.46  0.53  0.52      0.47  0.00  0.91   0.47  0.54   
        2      NaN    NaN   NaN  0.55       NaN   NaN   NaN    NaN  0.50   
        0     0.54   0.59  0.53  0.47      0.66  0.13  0.90   0.51  0.53   
        1     0.48   0.45  0.54  0.50      0.47  0.00  0.90   0.50  0.53   
        2      NaN    NaN   NaN  0.54       NaN   NaN   NaN    NaN  0.53   
Elena    0     0.54   0.55  0.55  0.57      0.53  0.58  0.55   0.52  0.45   
        1     0.53   0.49  0.53  0.65      0.38  0.62  0.48   0.49  0.55   
        2      NaN    NaN   NaN  0.66       NaN   NaN   NaN    NaN  0.42   
        0     0.51   0.53  0.55  0.62      0.52  0.57  0.53   0.50  0.48   
        1     0.48   0.45  0.52  0.63      0.38  0.59  0.46   0.53  0.55   
        2      NaN    NaN   NaN  0.63       NaN   NaN   NaN    NaN  0.45

And I want to add 2 empty/NaN rows each 3 rows我想每 3 行添加 2 个空/NaN 行

probe_names  PLAGL1  GRB10  MEST   H19  KCNQ1OT1  MEG3  MEG8  SNRPN  PEG3  \
Jemima   0     0.55   0.53  0.53  0.47      0.62  0.11  0.83   0.50  0.49   
        1     0.51   0.46  0.53  0.52      0.47  0.00  0.91   0.47  0.54   
        2      NaN    NaN   NaN  0.55       NaN   NaN   NaN    NaN  0.50  
        3
        4
        0     0.54   0.59  0.53  0.47      0.66  0.13  0.90   0.51  0.53   
        1     0.48   0.45  0.54  0.50      0.47  0.00  0.90   0.50  0.53   
        2      NaN    NaN   NaN  0.54       NaN   NaN   NaN    NaN  0.53   
        3
        4
Elena    0     0.54   0.55  0.55  0.57      0.53  0.58  0.55   0.52  0.45   
        1     0.53   0.49  0.53  0.65      0.38  0.62  0.48   0.49  0.55   
        2      NaN    NaN   NaN  0.66       NaN   NaN   NaN    NaN  0.42   
        0     0.51   0.53  0.55  0.62      0.52  0.57  0.53   0.50  0.48   
        1     0.48   0.45  0.52  0.63      0.38  0.59  0.46   0.53  0.55   
        2      NaN    NaN   NaN  0.63       NaN   NaN   NaN    NaN  0.45
        3
        4

I don't know how to do this in multi-index tables.我不知道如何在多索引表中执行此操作。 I have checked on the inte.net but I can't see something really similar.我在 inte.net 上查过,但看不到真正相似的东西。

reindex to a MultiIndex:重新索引为reindex

#include an extra index level to differentiate between duplicated indices
df = df.set_index(df.groupby(level=[0,1],sort=False).cumcount(),append=True)

#create a 3-level multiindex
midx = pd.MultiIndex.from_product([df.index.levels[0],range(df.index.levels[1].max()+3),df.index.levels[2]])

#reindex, sort, and drop the extra level
output = df.reindex(midx).sort_index(level=[0,2],ascending=[False,True]).droplevel(2)

>>> output
          PLAGL1  GRB10  MEST   H19  KCNQ1OT1  MEG3  MEG8  SNRPN  PEG3
Jemima 0    0.55   0.53  0.53  0.47      0.62  0.11  0.83   0.50  0.49
       1    0.51   0.46  0.53  0.52      0.47  0.00  0.91   0.47  0.54
       2     NaN    NaN   NaN  0.55       NaN   NaN   NaN    NaN  0.50
       3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       0    0.54   0.59  0.53  0.47      0.66  0.13  0.90   0.51  0.53
       1    0.48   0.45  0.54  0.50      0.47  0.00  0.90   0.50  0.53
       2     NaN    NaN   NaN  0.54       NaN   NaN   NaN    NaN  0.53
       3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
Elena  0    0.54   0.55  0.55  0.57      0.53  0.58  0.55   0.52  0.45
       1    0.53   0.49  0.53  0.65      0.38  0.62  0.48   0.49  0.55
       2     NaN    NaN   NaN  0.66       NaN   NaN   NaN    NaN  0.42
       3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       0    0.51   0.53  0.55  0.62      0.52  0.57  0.53   0.50  0.48
       1    0.48   0.45  0.52  0.63      0.38  0.59  0.46   0.53  0.55
       2     NaN    NaN   NaN  0.63       NaN   NaN   NaN    NaN  0.45
       3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN
       4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   NaN

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM