Python层次结构 - 多级

时间:2021-06-23 16:16:51

标签: python hierarchy

我有这个数据框,

<头>
ID 附件
800 700
700 330
330 220
220 110
110 NULL

我想要这个结果

<头>
ID Level1 Level2 Level3 Level4
800 700 330 220 110

有人可以帮助我,非常感谢。

1 个答案:

答案 0 :(得分:0)

假设 df 是您的数据框变量,这样的事情应该可以工作。

ids = set(df[df["Attachment"].isna()]["ID"])
levels = {0: ids} # Gets the last level
df = df[~df["Attachment"].isna()]
i=0
while len(df)>0: # Gets the previous levels
    i -= 1
    mask = df["Attachment"].isin(levels[i+1])
    ids = set(df[mask]["ID"])
    levels[i] = ids 
    df = df[~mask]

levels_df = pd.DataFrame({f"Level{-i-j}": list(levels[-j]) for j in range(1-i)})
levels_df.rename(columns={"Level0": "ID"}, inplace=True)