基于DataFrame改变列类型的方法


Posted in Python onJuly 25, 2018

今天用numpy 的linalg.det()求矩阵的逆的过程中出现了一个错误:

TypeError: No loop matching the specified signature and casting was found for ufunc det

查了半天发现是数据类型的问题,numpy在算逆的时候会先检查一下数据类型是否一致,若不一致就会报错(话说这个错误提示信息也太难理解了,还得看源码o(?□?)o)。

由于我的数据是用pandas.DataFrame读取的,所以每一列的数据类型有可能不同。

回头检查一下数据,果然有的是int,有的是float。所以全部改为float64类型。

找到了如下的方法,以及DataFrame数据类型:

DataFrame 类型转换方法—astype()

import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':'1'}, {'col1':'b', 'col2':'2'}])

print df.dtypes

df['col2'] = df['col2'].astype('int')
print '-----------'
print df.dtypes

df['col2'] = df['col2'].astype('float64')
print '-----------'
print df.dtypes

输出:

col1 object
col2 object
dtype: object
-----------
col1 object
col2  int32
dtype: object
-----------
col1  object
col2 float64
dtype: object

astype()也能一次改变所有数据的类型:

In[30]:a
Out[31]: 
   a   b   c   d
0 0.891380 0.442167 -0.539450 1.023458
1 -0.488131 -1.847104 -0.209799 -0.768713
2 1.290434 0.327096 0.358406 0.422209

In[32]:a.astype('int32')
Out[32]: 
 a b c d
0 0 0 0 1
1 0 -1 0 0
2 1 0 0 0

附:data type list

Data type Description
bool_ Boolean (True or False) stored as a byte
int_ Default integer type (same as C long; normally either int64 or int32)
intc Identical to C int (normally int32 or int64)
intp Integer used for indexing (same as C ssize_t; normally either int32 or int64)
int8 Byte (-128 to 127)
int16 Integer (-32768 to 32767)
int32 Integer (-2147483648 to 2147483647)
int64 Integer (-9223372036854775808 to 9223372036854775807)
uint8 Unsigned integer (0 to 255)
uint16 Unsigned integer (0 to 65535)
uint32 Unsigned integer (0 to 4294967295)
uint64 Unsigned integer (0 to 18446744073709551615)
float_ Shorthand for float64.
float16 Half precision float: sign bit, 5 bits exponent, 10 bits mantissa
float32 Single precision float: sign bit, 8 bits exponent, 23 bits mantissa
float64 Double precision float: sign bit, 11 bits exponent, 52 bits mantissa
complex_ Shorthand for complex128.
complex64 Complex number, represented by two 32-bit floats (real and imaginary components)
complex128 Complex number, represented by two 64-bit floats (real and imaginary components)

以上这篇基于DataFrame改变列类型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python传递参数方式小结
Apr 17 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
python实现按行分割文件
Jul 22 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python安装后的目录在哪里
Jun 21 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
OpenCV-Python实现轮廓的特征值
Jun 09 Python
对pandas中Series的map函数详解
Jul 25 #Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 #Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 #Python
Python走楼梯问题解决方法示例
Jul 25 #Python
python 批量修改/替换数据的实例
Jul 25 #Python
django 实现电子支付功能的示例代码
Jul 25 #Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 #Python
You might like
php生成随机密码的几种方法
2011/01/17 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python中树与树的表示知识点总结
2019/09/14 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis