如何调整dataframe行顺序使其与另一dataframe匹配,仅修改单个即可
解决方案
完全可以实现,你可以通过索引匹配的方式仅修改需要调整顺序的DataFrame,不需要对两个表做排序操作,以下是不同技术栈的实现方式:
Python(Pandas)场景
假设你要将labels的顺序调整为和features的id原有顺序一致:
# 最简写法,仅改动labels labels = labels.set_index('id').reindex(features['id']).reset_index()
也可以用loc实现相同效果:
labels = labels.set_index('id').loc[features['id']].reset_index()
R语言场景
同样仅修改labels即可,无需排序:
library(dplyr) labels <- labels %>% slice(match(features$id, id))
补充说明
上述方案的前提是两个DataFrame的id完全一一对应,无重复、无缺失。如果存在id不匹配的情况,重排后对应位置会返回NA,可用于排查id不一致的问题。
内容的提问来源于stack exchange,提问作者cgino
相关产品推荐
相关产品推荐

