当前位置:  开发笔记 > 编程语言 > 正文

pandas python按照模式排序

如何解决《pandaspython按照模式排序》经验,为你挑选了1个好方法。

我有一个由5列组成的pandas数据框.第二列的数字1至500重复5次.作为一个较短的例子,第二列是这样的(1,4,2,4,3,1,1,2,4,3,2,1,4,3,2,3),我想将它排序为这样(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4).我用来排序的df=res.sort([2],ascending=True)代码是这个代码对它进行排序 (1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4).

任何帮助都感激不尽.谢谢



1> Andy Hayden..:

怎么样:通过cumcount 排序然后是值本身:

In [11]: df = pd.DataFrame({"s": [1,4,2,4,3,1,1,2,4,3,2,1,4,3,2,3]})

In [12]: df.groupby("s").cumcount()
Out[12]:
0     0
1     0
2     0
3     1
4     0
5     1
6     2
7     1
8     2
9     1
10    2
11    3
12    3
13    2
14    3
15    3
dtype: int64

In [13]: df["s_cumcounts"] = df.groupby("s").cumcount()

In [14]: df.sort_values(["s_cumcounts", "s"])
Out[14]:
    s  s_cumcounts
0   1            0
2   2            0
4   3            0
1   4            0
5   1            1
7   2            1
9   3            1
3   4            1
6   1            2
10  2            2
13  3            2
8   4            2
11  1            3
14  2            3
15  3            3
12  4            3

In [15]: df = df.sort_values(["s_cumcounts", "s"])

In [16]: del df["s_cumcounts"]

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有