当前位置 博文首页 > pandas 颠倒列顺序的两种解决方案

    pandas 颠倒列顺序的两种解决方案

    作者:勤劳的大乐乐 时间:2021-05-05 17:43

    在数据预处理过程中可能需要将列的顺序颠倒,有两种方法。

    import numpy as np
    import pandas as pd
    df = pd.DataFrame(np.array(range(20)).reshape(4,5))
    print(df)

    原始dataframe如下:

      0  1  2  3  4
    0  0  1  2  3  4
    1  5  6  7  8  9
    2 10 11 12 13 14
    3 15 16 17 18 19

    1. 方法一

    手动设置列名列表,应用在dataframe中(适合列名比较少的情况)

    我们可以手动来更换列的顺序

    cols = [4,3,2,1,0]
    df = df.ix[:,cols]
    print(df)

    输出如下:

      4  3  2  1  0
    0  4  3  2  1  0
    1  9  8  7  6  5
    2 14 13 12 11 10
    3 19 18 17 16 15

    2. 方法二

    pandas提供颠倒列顺序的方式

    可以看出当数据的列较多时,方法一会非常繁琐,pandas提供一种非常简便的方式来进行列顺序的颠倒。

    df = df.ix[:, ::-1]
    print(df)

    输出如下:

      4  3  2  1  0
    0  4  3  2  1  0
    1  9  8  7  6  5
    2 14 13 12 11 10
    3 19 18 17 16 15

    补充:Python列表排序与倒序

    python学习笔记

    列表排序

    1、sort()

    2、sorted()

    3、reverse()

    sort()的使用

    letters = ['d','a','e','c','b']
    print letters
    ['d','a','e','c','b']
    letters.sort()
    print letters
    ['a','b','c','d','e']

    sort()会自动按照字母顺序对字符串由小到大排序,如果数字就由小到大

    注:sort()会修改原来的列表他是修改列表,而不是创建新的列表。

    不应该

    print letters.sort()

    而应该

    letters.sort()
    print letters

    还可以用.sorted()函数

    # 得到一个有序的副本列表
    #而不影响原来列表的顺序
    old = ['d','a','e','c','b']
    new = sorted(old)
    print old
    ['d','a','e','c','b']
    print new
    ['a','b','c','d','e']

    reverse的使用

    # 方法1 作为reverse()函数
    letters = ['d','a','e','c','b']
    letters.sort()
    print letters
    ['a','b','c','d','e']
    letters.reverse()
    print letters
    ['e','d','c','b','a']
    # 方法2 作为sort()函数参数
    letters = ['d','a','e','c','b']
    letter.sort(reverse = Ture)

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持站长博客。如有错误或未考虑完全的地方,望不吝赐教。

    js