【发布时间】:2019-04-07 20:36:10
【问题描述】:
我有一个数据框,我想根据同一数据框中另一列的值对其进行分组。
例如:
Parent_ID 和 Child ID 相互关联,并定义了层次树中谁与谁相关。
数据框看起来像(来自 csv 文件的输入)
No Name ID Parent_Id
1 Tom 211 111
2 Galie 209 111
3 Remo 200 101
4 Carmen 212 121
5 Alfred 111 191
6 Marvela 101 111
7 Armin 234 101
8 Boris 454 109
9 Katya 109 323
我想根据下面分组中的 ID 和 Parent_ID 对这个数据框进行分组,并根据顶级父级生成 CSV 文件。即 Alfred.csv、Carmen.csv(将只有自己的条目,冰线 #4)、使用 to_csv() 函数的 Katya.csv。
Alfred
|_ Galie
_ Tom
_ Marvela
|_ Remo
_ Armin
Carmen
Katya
|_ Boris
而且,我想在同一数据框中创建一个新列,该列将有一个指示层次结构的标签。喜欢:
No Name ID Parent_Id Tag
1 Tom 211 111 Alfred
2 Galie 209 111 Alfred
3 Remo 200 101 Marvela, Alfred
4 Carmen 212 121
5 Alfred 111 191
6 Marvela 101 111 Alfred
7 Armin 234 101 Marvela, Alfred
8 Boris 454 109 Katya
9 Katya 109 323
请注意,名称可以重复,但 ID 是唯一的。
请告诉我如何使用 pandas 来实现这一点。我尝试了 groupby() 但似乎有点复杂并且没有得到我想要的。每个父级应该有一个文件,子级记录在父级文件中。 如果一个孩子有另一个孩子(如 marvel),它就有资格拥有自己的 csv 文件。
最终的输出是
Alfred.csv - All records matching Galie, Tom, Marvela
Marvela.csv - All records matching Remo, Armin
Carmen.csv - Only record matching carmen (row)
Katya.csv - all records matching katya, boris
【问题讨论】:
标签: python pandas dataframe hierarchy