如何重新排序数据帧的顺序以匹配第二个数据帧的顺序?

时间:2019-01-24 22:09:50

标签: python python-3.x pandas dataframe

如果我有两个数据框作为示例:

df1:

  x    y
0 1.1. 2.1
1 3.1  5.1

df2:

x    y
0 0.0  2.2
1 1.1  2.1
2 3.0. 6.6
3 3.1  5.1
4 0.2  8.8

,并且我希望df2能够匹配具有相同值的顺序,但是在顺序之后保持不匹配的值,我该如何使用熊猫呢?也许还有其他东西。

所需的输出:

new_df:

    x    y
0  1.1  2.1
1  3.1. 5.1
2  0.0  2.2
3  3.0  6.6
4  0.2  8.8

第2-4行,我不关心顺序,只要匹配的行遵循与df1相同的顺序即可。我希望df1和df2的索引值相等

有什么办法吗?

对不起,如果我提交的方式不正确。

谢谢大家

3 个答案:

答案 0 :(得分:3)

只需将mergeindicator一起使用作为默认排序

df1.merge(df2,indicator=True,how='right')
Out[354]: 
     x    y      _merge
0  1.1  2.1        both
1  3.1  5.1        both
2  0.0  2.2  right_only
3  3.0  6.6  right_only
4  0.2  8.8  right_only

答案 1 :(得分:2)

pd.concatdrop_duplicates一起使用:

 pd.concat([df1,df2]).drop_duplicates().reset_index(drop=True)

输出:

     x    y
0  1.1  2.1
1  3.1  5.1
2  0.0  2.2
3  3.0  6.6
4  0.2  8.8

答案 2 :(得分:1)

查看.combine_first和.update方法。

df1.combine_first(df2)

它们在documentation here中有解释。