如何将Pandas DataFrame最后两行移至顶部?
将Pandas DataFrame最后两行移至顶部的高效实现方法
你可以通过以下两种高效方式实现需求,无需额外复制DataFrame:
方法1:手动拼接索引序列
直接构造目标索引顺序,通过df.loc完成行重排:
import pandas as pd df = pd.DataFrame({ "A" : [1,2,3,4], "C": [5, 6, 7, 8], "D": [9, 10, 11, 12], "E": [13, 14, 15, 16], }) # 拼接新索引:最后两行索引 + 前面所有行索引 new_index = df.index[-2:].tolist() + df.index[:-2].tolist() df = df.loc[new_index] print(df)
输出结果:
A C D E 2 3 7 11 15 3 4 8 12 16 0 1 5 9 13 1 2 6 10 14
方法2:使用np.roll简化操作
利用numpy.roll的滚动特性,只需设置合适的偏移量即可:
import pandas as pd import numpy as np df = pd.DataFrame({ "A" : [1,2,3,4], "C": [5, 6, 7, 8], "D": [9, 10, 11, 12], "E": [13, 14, 15, 16], }) # shift=-2 表示向左滚动2位,将前两行移至末尾,最后两行自然到顶部 df = df.reindex(np.roll(df.index, shift=-2)) print(df)
输出结果与方法1一致。
说明
两种方法均基于索引重排实现,不会复制DataFrame的底层数据,属于高效的视图级操作,完全满足你的需求。
内容的提问来源于stack exchange,提问作者user21060710
相关产品推荐
相关产品推荐

