在组的最后一个元素之后添加行

Add row after the last element of a group

关于pandas,我有2个数据帧:

数据框 1:
0 |一个 | 0
1 |一个 | 1
2 |一个 | 2
3 |乙 | 0
4 |乙 | 2
5 | c | 0
6 | c | 7
...(继续)

数据框 2:
0 |一个 | x
1 |乙 | y
2 | c | z
...(继续)

数据框 1:
我需要在 dataframe1 中每个组的最后一个元素之后添加 x,y。生成的数据框应如下所示:

结果数据帧:
0 |一个 | 0
1 |一个 | 1
2 |一个 | 2
3 |一个 | x
4 |乙 | 0
5 |乙 | 2
6 |乙 | y
...

有什么想法吗?非常感谢!

如果 df1 中的值按第一列排序,则使用 concat + sort_values + reset_index:

df = pd.concat([df1,df2]).sort_values('a').reset_index(drop=True)
print (df)
    a   b
0   a   0
1   a   1
2   a   2
3   a   x
4   b   0
5   b   2
6   b   y
7   c   0
8   c   7
9   c   z

要对 df1 中的值进行排序,请使用:

df1 = df1.sort_values('a')

输入:

print (df1)
   a  b
0  a  0
1  a  1
2  a  2
3  b  0
4  b  2
5  c  0
6  c  7

print (df2)
    a   b
0   a   0
1   a   1
2   a   2
3   a   x
4   b   0
5   b   2
6   b   y
7   c   0
8   c   7
9   c   z
10  c  z1

评论的另一个解决方案:

df = pd.concat([df1.set_index('a'),df2.set_index('a')]).sort_index().reset_index()
print (df)
    a   b
0   a   0
1   a   1
2   a   2
3   a   x
4   b   0
5   b   2
6   b   y
7   c   0
8   c   7
9   c   z
10  c  z1