更改DataFrame列顺序
使用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列顺序的更多相关文章
- Python pandas.DataFrame调整列顺序及修改index名
1. 从字典创建DataFrame >>> import pandas >>> dict_a = {'],'mark_date':['2017-03-07','20 ...
- SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...
- DataTable 删除列 调整列顺序 修改列标题名称
DataTable dt = new DataTable(); //删除列 dt.Columns.Remove("Sex"); dt.Columns.Remove("Ag ...
- SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因:一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?二来觉得,索引是个非常大的话题,很难概括 ...
- oracle调整表中列顺序
有一个哥们提出一个问题: 有个表,创建时候的列顺序是a,b,c 如何使用select * 的时候,让列的显示顺序是a,c,b 而且任性地必须使用select *来查询,且不能重建表. 假设有个表tes ...
- Oracle 列顺序测试
列顺序测试 大家在做表设计的时候通常对表中列的排列顺序没有过多注意,但是其实越常用的列,它的位置越靠前,则查询速度越快. 因为每个block里面存储了row directory (每行数据在块中的位移 ...
- 转--DataTable 修改列名 删除列 调整列顺序
DataTable myDt =dt; //删除列 myDt.Columns.Remove("minArea"); myDt.Columns.Remove("maxAre ...
- DataTable 修改列名 删除列 调整列顺序
DataTable myDt =dt;//删除列myDt.Columns.Remove("minArea");myDt.Columns.Remove("maxArea&q ...
- Java JTable列顺序和列宽度保存在用户本地
上周碰到了一个棘手的需求,就是要把用JTable的列顺序和列宽度保存下来,这次用户调整了列宽度,关闭程序,下次再打开时,这个列的宽还是要保持,因为SWing的特性,都是在程序启动时就确定了列顺序和列宽 ...
随机推荐
- 【原创】JDK 9-17新功能30分钟详解-语法篇-var
JDK 9-17新功能30分钟详解-语法篇-var 介绍 JDK 10 JDK 10新增了新的关键字--var,官方文档说作用是: Enhance the Java Language to exten ...
- Java精进-手写持久层框架
前言 本文适合有一定java基础的同学,通过自定义持久层框架,可以更加清楚常用的mybatis等开源框架的原理. JDBC操作回顾及问题分析 学习java的同学一定避免不了接触过jdbc,让我们来回顾 ...
- APICloud AVM框架 封装车牌号输入键盘组件
AVM(Application-View-Model)前端组件化开发模式基于标准Web Components组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完 ...
- 最小生成树(prime+kruskal)
1.prime算法 prime算法类似于bfs,就是判断每次连接的点中距离最短的,加入到树中,具体如下: prime算法要求一开始随便选择一个点作为起点,因为最小生成树包括所有点,所以起点随机即可(一 ...
- Dubbo-Adaptive实现原理
前言 前面我们已经分析Dubbo SPI相关的源码,看过的小伙伴相信已经知晓整个加载过程,我们也留下两个问题,今天我们先来处理下其中关于注解Adaptive的原理. 什么是@Adaptive 对应于A ...
- Centos_yum使用
安装应用 yum install -y xxx -y 表示自动yes 卸载应用 yum -y remove xxx -y 表示自动yes 查看已安装的应用 yum list installed
- spark 读取Geomesa(Hbase)数据
package com.grady.geomesa import org.apache.hadoop.conf.Configuration import org.apache.spark.SparkC ...
- 一篇文章带你掌握主流数据库框架——MyBatis
一篇文章带你掌握主流数据库框架--MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 在之前的文章中我们学习了MYSQL和JDBC,但是这些东西远远不 ...
- 【前端】在浏览器控制台,直接发Ajax请求
我们在日常的开发的过程中,经常需要前端测试发送请求测试一些数据.但是由于一些session,cookie的存在,我们无法在postman上创建一些会话.那么这样,我们就可以在浏览器上直接发送Ajax请 ...
- Java根据Freemarker模板生成Word文件
1. 准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...