Skip to main content
 首页 » 编程设计

Python Pandas之移动行

2025年05月04日24zfyouxi

我确信这可能很简单,但我不确定如何去做。

我有一个包含 4 行的数据框(数据透视表),我们称它们为 A、B、C、D。

现在,我不希望它们按字母顺序排列,但我希望它们按 B、C、A、D 依次排列。

如何移动行?显然,在 Excel 中,我只会剪切并粘贴它。我可以用 Python 做吗?

非常感谢

请您参考如下方法:

使用 loc
loc允许您传递一个索引器,该索引器引用具有相应标签的行(列)

df.loc[['B', 'C', 'A', 'D']] 

numpy
核过度杀伤......但速度更快

i = df.index.values 
v = df.values 
a = i.argsort() 
u = np.empty_like(a) 
r = np.arange(a.size) 
u[a] = r 
n = list('BCAD') 
pd.DataFrame(v[i[a].searchsorted(n)[u]], n, df.columns) 

时机
测试数据

df = pd.DataFrame(dict(A=range(4)), list('ABCD')) 

结果

%timeit df.loc[list('BCAD')] 
1000 loops, best of 3: 361 µs per loop 
 
%%timeit 
i = df.index.values 
v = df.values 
a = i.argsort() 
u = np.empty_like(a) 
r = np.arange(a.size) 
u[a] = r 
n = list('BCAD') 
pd.DataFrame(v[i[a].searchsorted(n)[u]], n, df.columns) 
10000 loops, best of 3: 135 µs per loop