具有以下DF:
parnet_path child level
0 A[].B{} C 3
1 A[].BBB{} C 3
2 A[].B{}.CCC{} D 4
3 A[].B{}.CCC{} AA 4
4 A[].B{}.CCC{} LALALLA 4
5 BB{} A 2
6 BB{} B 2
7 C{} no_child 1
8 D no_child 1
9 A[].B{}.CCC{} DDD 4
10 A[].B{}.CCC{} RRR 4
11 AA[].BB{}.CC{} ZZZ 4
12 AA[].BB{}.CC{} EEE 4
13 AA[].BB{}.CC{} OOO 4
14 A[].B{}.CDD{} AA 4
我想在parent_path列和level中收集同一目录下的child, 我想到了这个:
df.sort_values(by=['level','parnet_path', 'child',] , ascending=False, inplace=True)
df=df.groupby('parnet_path').agg({lambda x: list(x)})
Out>:
child level
<lambda> <lambda>
parnet_path
AA[].BB{}.CC{} [ZZZ, OOO, EEE] [4, 4, 4]
A[].BBB{} [C] [3]
A[].B{} [C] [3]
A[].B{}.CCC{} [RRR, LALALLA, DDD, D, AA] [4, 4, 4, 4, 4]
A[].B{}.CDD{} [AA] [4]
BB{} [B, A] [2, 2]
C{} [no_child] [1]
D [no_child] [1]
它没有将列名称保存为原始DF中的列名称, 我试过:
df.columns = df.columns.droplevel(1)
print(df)
out:>
child level
parnet_path
AA[].BB{}.CC{} [ZZZ, OOO, EEE] [4, 4, 4]
A[].BBB{} [C] [3]
A[].B{} [C] [3]
A[].B{}.CCC{} [RRR, LALALLA, DDD, D, AA] [4, 4, 4, 4, 4]
A[].B{}.CDD{} [AA] [4]
BB{} [B, A] [2, 2]
C{} [no_child] [1]
D [no_child] [1]
print(df.index)
out:>
Index(['AA[].BB{}.CC{}', 'A[].BBB{}', 'A[].B{}', 'A[].B{}.CCC{}',
'A[].B{}.CDD{}', 'BB{}', 'C{}', 'D'],
dtype='object', name='parnet_path')
但是不知何故,父路径(它是第一个列名)现在是索引名,我不得不按父路径+级别对DF进行排序。 得到 " 对于多索引,标签必须是元组,其元素对应于每个级别。”
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐