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

时间:2017-10-11 12:41:32

标签: python pandas dataframe pandas-groupby

关于熊猫,我有2个数据帧:

数据帧1:
0 | a | 0
1 | a | 1
2 | a | 2
3 | b | 0
4 | b | 2
5 | c | 0
6 | c | 7
......(它继续)

数据帧2:
0 | a | X
1 | b | ÿ
2 | c | ž
......(它继续)

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

结果数据框:
0 | a | 0
1 | a | 1
2 | a | 2
3 | a | X
4 | b | 0
5 | b | 2
6 | b | ÿ
...

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

1 个答案:

答案 0 :(得分:1)

如果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

Corley Brigman评论的另一种解决方案:

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