pandas 颠倒列顺序的两种解决方案
本文介绍在 pandas 中颠倒 DataFrame 列顺序的两种常用方法。第一种适用于列数较少的情况,通过手动指定列名列表实现;第二种利用 pandas 内置切片功能,适合处理列数较多的数据,操作更为简便高效。
在进行数据预处理时,有时需要调整 DataFrame 的列排列顺序,将其完全颠倒。
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 的列名数量较少时,可以通过手动构建列名列表,并将其应用于 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()
letters = ['d','a','e','c','b']
print letters
['d','a','e','c','b']
letters.sort()
print letters
['a','b','c','d','e']
sort() 函数的具体用法
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)
以上为个人经验分享,希望能为大家提供参考。如有错误或考虑不周之处,欢迎指正。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









