创建一个列,该列的路径要归功于另一行(级别+子级)



我有这个数据帧

d = {'level': [1,2,3,4,1,2,3,1,2], 'name': ['A', 'B','C','D','F','G','H','X','Z']}
df = pd.DataFrame(data=d)
level   name
1        A
2        B
3        C
4        D
1        F
2        G
3        H
1        X
2        Z

我想创建一个函数,在新列(路径(中添加基于级别和上一级别的名称路径

获得这种结果的最佳方式是什么?例如:

level   name   Path
1        A     A
2        B     A/B
3        C     A/B/C
4        D     A/B/C/D
1        F     F
2        G     F/G
3        H     F/G/H
1        X     X
2        Z     X/Z

我希望我的请求是明确的

非常感谢

您可以按每个"组";,使用CCD_ 1和CCD_。然后再次应用cumsum——当应用于字符串值时,它将累积地连接它们
我们在这里也将使用str.strip来整理后面的/字符。

d = {'level': [1,2,3,4,1,2,3,1,2], 'name': ['A', 'B','C','D','F','G','H','X','Z']}
df = pd.DataFrame(data=d)
df['path'] = (df.groupby(df['level'].eq(1).cumsum())['name']
.apply(lambda x: (x + '/').cumsum().str.strip('/')))

[out]

level name     path
0      1    A        A
1      2    B      A/B
2      3    C    A/B/C
3      4    D  A/B/C/D
4      1    F        F
5      2    G      F/G
6      3    H    F/G/H
7      1    X        X
8      2    Z      X/Z

最新更新