pandas 当索引值不存在时在多索引 Dataframe 中传播值

pbpqsu0x  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(120)

我有一个由groupby()生成的多索引 Dataframe ,如下所示:

df_grouped = df.groupby(['date', 'name']).agg({'ABC': 'sum'})
df_grouped
                   ABC
date        name 
01-03-2018  Adam   1
            John   2
01-04-2018  Adam   4
            Sam    1
01-05-2018  Adam   5
            John   3
            Sam    2
01-06-2018  Jake   1

只有当name在新的date中不存在时,我才想在date中向前传播ABC值。如果存在,则应保持原样:

ABC
date        name 
01-03-2018  Adam   1
            John   2
01-04-2018  Adam   4
            John   2
            Sam    1
01-05-2018  Adam   5
            John   3
            Sam    2
01-06-2018  Jake   1
            Adam   5
            John   3
            Sam    2

我不知道如何在不循环遍历每个date的情况下高效地执行此操作。请问有更好的方法吗?

piv4azn7

piv4azn71#

df = df_grouped.unstack().ffill().stack().astype(int)
                 ABC
date       name     
01-03-2018 Adam    1
           John    2
01-04-2018 Adam    4
           John    2
           Sam     1
01-05-2018 Adam    5
           John    3
           Sam     2
01-06-2018 Adam    5
           Jake    1
           John    3
           Sam     2

相关问题