我有一个大致如下所示的数据框

ID    VAL
2     3
2     7
2     4
2     5
2     2
3     4
3     6
3     7
3     2
4     2
4     3
4     4
4     5
4     6


另一个大致如下所示的数据框

ID     VAL
2       5
3       7


我想执行一个操作,对于第二个数据帧中的每一行,该行将移至顶部。

ID    VAL
2     5
2     3
2     7
2     4
2     2
3     7
3     4
3     6
3     2
4     2
4     3
4     4
4     5
4     6


看到(2,5)元组和(3,7)元组已经移到“ ID”开始的位置。

我目前的执行效率非常低。

任何帮助,将不胜感激!

最佳答案

我正在使用通过merge创建的帮助键,然后我们sort_values

df1.merge(df2.assign(key=0),how='left').fillna({'key':1}).sort_values(['ID','key'])
# you can add .drop('key',1) at the end :-)
    ID  VAL  key
3    2    5  0.0
0    2    3  1.0
1    2    7  1.0
2    2    4  1.0
4    2    2  1.0
7    3    7  0.0
5    3    4  1.0
6    3    6  1.0
8    3    2  1.0
9    4    2  1.0
10   4    3  1.0
11   4    4  1.0
12   4    5  1.0
13   4    6  1.0

10-04 21:46
查看更多