我有这个数据帧
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