我有一个数据框,但是我想基于现有数据框添加新行。每个ID都有其自己的组,该组从其父级继承。但是我想在数据框中追加新行,以便将父ID设置为新ID,并添加基于其子代的组
例如:
ID | Parent | Group
1001 | 2345 | 1
2001 | 3456 | 1
2002 | 3456 | 1
2003 | 3456 | 1
3001 | 4567 | 2
3002 | 4567 | 2
4012 | 5678 | 3
5123 | 6789 | 3
预期结果:
ID | Parent | Group
1001 | 2345 | 1
2001 | 3456 | 1
2002 | 3456 | 1
2003 | 3456 | 1
3001 | 4567 | 2
3002 | 4567 | 2
4012 | 5678 | 3
5123 | 6789 | 3
2345 | 2345 | 1
3456 | 3456 | 1
4567 | 4567 | 2
5678 | 5678 | 3
6789 | 6789 | 3
答案 0 :(得分:1)
我认为您需要concat
和DataFrame.assign
来覆盖ID
的列Parent
和DataFrame.drop_duplicates
来删除列表中指定列的重复项:
df1 = df.assign(ID = df['Parent']).drop_duplicates(['Parent','Group'])
df2 = pd.concat([df, df1], ignore_index=True)
print (df2)
ID Parent Group
0 1001 2345 1
1 2001 3456 1
2 2002 3456 1
3 2003 3456 1
4 3001 4567 2
5 3002 4567 2
6 4012 5678 3
7 5123 6789 3
8 2345 2345 1
9 3456 3456 1
10 4567 4567 2
11 5678 5678 3
12 6789 6789 3