gpt4 book ai didi

pandas - 根据列表重新排列 Pandas 数据框的行并保持顺序

转载 作者:行者123 更新时间:2023-12-04 18:03:00 25 4
gpt4 key购买 nike

import numpy as np 
import pandas as pd

df = pd.DataFrame(data={'result':[-6.77,6.11,5.67,-7.679,-0.0930,4.342]}\
,index=['A','B','C','D','E','F'])
new_order = np.array([1,2,2,0,1,0])
new_order numpy 数组将每一行分配给三个组 [0,1 或 2] 之一。我想重新排列 df 的行以便第 0 组中的那些行首先出现,然后是 1,最后是 2。在三个组中的每一个中,初始顺序应保持不变。

在开始时,df 安排如下:
   result
A -6.770
B 6.110
C 5.670
D -7.679
E -0.093
F 4.342

这是给定上述输入数据所需的输出。
   result
D -7.679
F 4.342
A -6.770
E -0.093
B 6.110
C 5.670

最佳答案

您可以使用 argsortkind='mergesort'获得排序的行索引以保持顺序,然后简单地将所需输出的索引索引到数据帧中,就像这样 -

df.iloc[new_order.argsort(kind='mergesort')]

sample 运行 -
In [2]: df
Out[2]:
result
A -6.770
B 6.110
C 5.670
D -7.679
E -0.093
F 4.342

In [3]: df.iloc[new_order.argsort(kind='mergesort')]
Out[3]:
result
D -7.679
F 4.342
A -6.770
E -0.093
B 6.110
C 5.670

关于pandas - 根据列表重新排列 Pandas 数据框的行并保持顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com