如何根据列值在现有数据框中添加新行?

时间:2019-06-19 06:40:58

标签: python pandas dataframe

我有一个数据框,但是我想基于现有数据框添加新行。每个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

1 个答案:

答案 0 :(得分:1)

我认为您需要concatDataFrame.assign来覆盖ID的列ParentDataFrame.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