gpt4 book ai didi

python - 根据列排列/排序 Pandas 数据框数据中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:40 24 4
gpt4 key购买 nike

我是 Pandas 的新手。我需要根据组内的循环顺序按降序对数据值进行排序和分组。我有以下数据框:

Col1 Col2  
A 5030
B 4250
c 3340
D 2100
A 5044
B 4790
C 3482
C 3233
A 5099
B 4820
D 2345
D 2784
A 5999

我需要对数据帧进行排序,以便 Col2 中的所有值都按照从高到低的循环顺序排列在 Col1 中。例如,(A,B,C,D)的所有最高值将首先排序,然后是(A,B,C,D)的第二高值,然后是(A,B,C,D)的第三高值B、C、D)组需要跟随等等。

排序后的最终数据框应如下所示:

Col1     Col2

A 5999
B 4820
C 3482
D 2784
A 5099
B 4790
C 3340
D 2345
A 5044
B 4250
C 3233
D 2100
A 5030

Col1 除了 (A, B, C, D) 之外没有任何其他值。但可能存在 Col1 中仅存在 2 或 3 个不同值的情况。所以需要做相应的逻辑。

我可以通过以下步骤解决问题:

  1. 根据 Col1 中的不同值创建单独的数据帧。
  2. 根据 Col2 中的值按降序对每个子数据帧进行排序和索引。
  3. 然后遍历子数据帧的索引并将数据附加到每个单独的子数据帧的新数据帧中。

这个过程似乎不是最好的方法。因此,我正在寻找有关更简单的 native 解决方案的建议。

最佳答案

IIUC 使用 cumcount 创建新 key

df['Key']=df.sort_values('Col2',ascending=False).groupby('Col1').cumcount()
df=df.sort_values(['Key','Col1']).drop('Key',1)
df
Out[453]:
Col1 Col2
12 A 5999
9 B 4820
6 C 3482
11 D 2784
8 A 5099
5 B 4790
2 C 3340
10 D 2345
4 A 5044
1 B 4250
7 C 3233
3 D 2100
0 A 5030

关于python - 根据列排列/排序 Pandas 数据框数据中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56285236/

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