簡體   English   中英

填寫多索引中的缺失組 pandas dataframe

[英]Fill in missing group in multiindex pandas dataframe

我有以下df:

date      family    ID    value
2019      abc       10    0.5
                    15    0.3 
          xyz       22    0.4
                    40    1.1
2020      xyz       22    1.9
                    46    0.3

只有當familydate中不存在時,我才想轉發填充value 在上面的示例中,對於 abc, IDvalue將轉發到 2020,但對於 xyz 則不然。

我已經嘗試過df.unstack(['family','ID']).fillna(method = 'ffill') ,但是在上面的示例中,這將錯誤地轉發為家庭 xyz 填充 ID 40。

期望的結果是:

    date      family    ID    value
    2019      abc       10    0.5
                        15    0.3 
              xyz       22    0.4
                        40    1.1
    2020      abc       10    0.5
                        15    0.3    
              xyz       22    1.9
                        46    0.3

一旦unstack ,您可能需要檢查一年中沒有家庭數據的地方,可以通過groupby.trasnformany來完成。 然后在unstack ffill上使用 where 僅保留要填充的值。 fillna中使用它。 然后堆疊回來

df_u = df.unstack(['family','ID'])
df_ = df_u.fillna(
             df_u.ffill()
                 .where(~df_u.groupby(level='family', axis=1)
                             .transform('any'))
           ).stack(['family','ID'])
print (df_)
                value
date family ID       
2019 abc    10    0.5
            15    0.3
     xyz    22    0.4
            40    1.1
2020 abc    10    0.5
            15    0.3
     xyz    22    1.9
            46    0.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM