[我是熊猫新手,正在寻找一种使用pandas或python简化多级父子关系的方法。我有一个csv文件,其中包含如下数据。
[对于每个孩子,我想从父母到孩子遍历。任何帮助都将受到赞赏。
输入
--------------------
Child,Parent,Country
--------------------
A,TOP LEVEL,GERMANY
B,A,USA
C,B,JAPAN
D,TOP LEVEL,INDIA
E,D,CHINA
输出
--------------------
HIERARCHY,COUNTRY
--------------------
A,GERMANY
A.B,USA
A.B.C,JAPAN
D,INDIA
D.E,CHINA
这是使用groupby
并使用groupby
进行转换的一种方法>
itertools.accumulate
这可以使用itertools.accumulate
和有向图来完成,以防在原始DataFrame中不一定正确排序的情况。首先,我们需要修复DataFrame,以便from itertools import accumulate
g = df.Parent.eq('TOP LEVEL').cumsum()
(df.groupby(g, as_index=False).Child
.transform(lambda i: [*accumulate(i, lambda x, y: f'{x}.{y}')])
.assign(COUNTRY=df.Country))
HIERARCHY COUNTRY
0 A GERMANY
1 A.B USA
2 A.B.C JAPAN
3 D INDIA
4 D.E CHINA
不是父级,并且使用国家/地区。