正向填充移动极限

Foward filling moving limit

我有一个包含很多空白的数据框。图片上的第一个table。我想到达右边 table。我的想法是使用带有移动限制的 ffill()。该限制将根据右侧的内容进行调整。 因此,首先我们计算右侧的连续元素并填充 level2(黄色),然后对 level1(绿色)执行相同的操作。有可能吗?

假设空单元格是空字符串(""),你可以试试:

df[df == ""] = np.nan
m = ~df["Level 1"].isna()
df.loc[m, "Level 2"] = ""
df.loc[m, "Level 3"] = ""
df.loc[:, ["Level 1", "Level 2"]] = df.loc[:, ["Level 1", "Level 2"]].ffill()
print(df.fillna(""))

打印:

      Level 1   Level 2   Level 3
0   President                    
1   President    Office          
2   President    Office    Lucien
3   President    Office   Theresa
4         MEP                    
5         MEP    Bureau          
6         MEP    Bureau    Martin
7         MEP    Bureau  Juliette
8         MEP    Bureau     Romeo
9      Groups                    
10     Groups  Comittee          
11     Groups  Comittee      Paul
12     Groups  Comittee      Marc
13     Groups   Sub Com          
14     Groups   Sub Com    Julius
15     Groups   Sub Com    Marcus
16     Groups   Sub Com  Aurelius