使用pandas进行数据分析的时候,有时会由于各种需求添加了一些列。可是列的顺序并不能符合自己的期望。这个时候就需要对于列的顺序进行调整。

import numpy as np
import pandas as pd df = pd.DataFrame(np.random.rand(3, 5))
df["mean"]=df.mean()
print(df)

显示的数据内容为:

          0         1         2         3         4      mean
0 0.320500 0.200182 0.910904 0.037071 0.596277 0.405417
1 0.212709 0.285527 0.329076 0.129344 0.126926 0.403962
2 0.683041 0.726176 0.030683 0.259034 0.883049 0.423555

其实想调整为:(将最后一列,放到第一列)

       mean         0         1         2         3         4
0 0.463490 0.360264 0.687535 0.541793 0.453763 0.262976
1 0.615846 0.795119 0.570023 0.293943 0.113567 0.697966
2 0.548002 0.235088 0.589980 0.808269 0.787805 0.683487

调整列顺序的代码为:

cols = df.columns.tolist()
# 更改列顺序方法1:
# cols = cols[-1:] + cols[:-1]
# 更改列顺序方法2: 这种可以指定位置进行插入,指定位置删除。其实就是list顺序调整方式
cols.insert(0, cols.pop(-1))
df = df[cols] #or df = df.reindex(columns=cols) #有的帖子中说也可以使用 df = df.ix[:, cols],其实这个方法已经废弃了
print(df)

如果使用df = df.ix[:, cols]更改列顺序,会收到报错信息。内容为:AttributeError: 'DataFrame' object has no attribute 'ix' 。

当然解决问题的方式会有多重多样,比如:

# 方法1:
df = df[['mean'] + [col for col in df.columns if col != 'mean']]
print(df)
#方法2:
col = df.pop("mean")
df.insert(0, col.name, col)
print(df)
#方法3:
df.set_index(df.columns[-1], inplace=True)
df.reset_index(inplace=True)
print(df)

更改DataFrame列顺序的更多相关文章

  1. Python pandas.DataFrame调整列顺序及修改index名

    1. 从字典创建DataFrame >>> import pandas >>> dict_a = {'],'mark_date':['2017-03-07','20 ...

  2. SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)

    本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...

  3. DataTable 删除列 调整列顺序 修改列标题名称

    DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...

  4. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

    说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因:一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?二来觉得,索引是个非常大的话题,很难概括 ...

  5. oracle调整表中列顺序

    有一个哥们提出一个问题: 有个表,创建时候的列顺序是a,b,c 如何使用select * 的时候,让列的显示顺序是a,c,b 而且任性地必须使用select *来查询,且不能重建表. 假设有个表tes ...

  6. Oracle 列顺序测试

    列顺序测试 大家在做表设计的时候通常对表中列的排列顺序没有过多注意,但是其实越常用的列,它的位置越靠前,则查询速度越快. 因为每个block里面存储了row directory (每行数据在块中的位移 ...

  7. 转--DataTable 修改列名 删除列 调整列顺序

    DataTable myDt =dt; //删除列 myDt.Columns.Remove("minArea"); myDt.Columns.Remove("maxAre ...

  8. DataTable 修改列名 删除列 调整列顺序

    DataTable myDt =dt;//删除列myDt.Columns.Remove("minArea");myDt.Columns.Remove("maxArea&q ...

  9. Java JTable列顺序和列宽度保存在用户本地

    上周碰到了一个棘手的需求,就是要把用JTable的列顺序和列宽度保存下来,这次用户调整了列宽度,关闭程序,下次再打开时,这个列的宽还是要保持,因为SWing的特性,都是在程序启动时就确定了列顺序和列宽 ...

随机推荐

  1. 【原创】JDK 9-17新功能30分钟详解-语法篇-var

    JDK 9-17新功能30分钟详解-语法篇-var 介绍 JDK 10 JDK 10新增了新的关键字--var,官方文档说作用是: Enhance the Java Language to exten ...

  2. Java精进-手写持久层框架

    前言 本文适合有一定java基础的同学,通过自定义持久层框架,可以更加清楚常用的mybatis等开源框架的原理. JDBC操作回顾及问题分析 学习java的同学一定避免不了接触过jdbc,让我们来回顾 ...

  3. APICloud AVM框架 封装车牌号输入键盘组件

    AVM(Application-View-Model)前端组件化开发模式基于标准Web Components组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完 ...

  4. 最小生成树(prime+kruskal)

    1.prime算法 prime算法类似于bfs,就是判断每次连接的点中距离最短的,加入到树中,具体如下: prime算法要求一开始随便选择一个点作为起点,因为最小生成树包括所有点,所以起点随机即可(一 ...

  5. Dubbo-Adaptive实现原理

    前言 前面我们已经分析Dubbo SPI相关的源码,看过的小伙伴相信已经知晓整个加载过程,我们也留下两个问题,今天我们先来处理下其中关于注解Adaptive的原理. 什么是@Adaptive 对应于A ...

  6. Centos_yum使用

    安装应用 yum install -y xxx -y 表示自动yes 卸载应用 yum -y remove xxx -y 表示自动yes 查看已安装的应用 yum list installed

  7. spark 读取Geomesa(Hbase)数据

    package com.grady.geomesa import org.apache.hadoop.conf.Configuration import org.apache.spark.SparkC ...

  8. 一篇文章带你掌握主流数据库框架——MyBatis

    一篇文章带你掌握主流数据库框架--MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 在之前的文章中我们学习了MYSQL和JDBC,但是这些东西远远不 ...

  9. 【前端】在浏览器控制台,直接发Ajax请求

    我们在日常的开发的过程中,经常需要前端测试发送请求测试一些数据.但是由于一些session,cookie的存在,我们无法在postman上创建一些会话.那么这样,我们就可以在浏览器上直接发送Ajax请 ...

  10. Java根据Freemarker模板生成Word文件

    1.  准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...