[英]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
只有當family
在date
中不存在時,我才想轉發填充value
。 在上面的示例中,對於 abc, ID
和value
將轉發到 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.trasnform
和any
來完成。 然后在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.