Python 如何重新排列数据帧的顺序以匹配第二个数据帧的顺序?
例如,如果我有两个数据帧: df1: df2: 我希望df2匹配顺序,匹配共同的值,但在顺序之后保留不匹配的值,我如何使用pandas实现这一点?或者别的什么 期望输出: 新的"基本法":Python 如何重新排列数据帧的顺序以匹配第二个数据帧的顺序?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,例如,如果我有两个数据帧: df1: df2: 我希望df2匹配顺序,匹配共同的值,但在顺序之后保留不匹配的值,我如何使用pandas实现这一点?或者别的什么 期望输出: 新的"基本法": 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的索引值相等 有办法吗 对不起,如果我提交的方式是错误的 谢谢大家仅使用合并和指示符作
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的索引值相等
有办法吗
对不起,如果我提交的方式是错误的
谢谢大家仅使用
合并
和指示符
作为默认排序
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
请看.combine_first和.update方法
df1.combine_first(df2)
它们在。使用
pd.concat
和删除重复项中进行了解释:
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
唯一的问题是,由于某些原因(不确定原因),它会在末尾添加一行。有什么建议吗?@BVOM您需要检查重复的行,您这边的df2和df1是否有重复的行这将按索引重新创建行…他需要值匹配,检查您的输出,您有3.1和5.1的重复行
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