基于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 相关文章推荐
Linux下编译安装MySQL-Python教程
Feb 02 Python
使用Python的PEAK来适配协议的教程
Apr 14 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
python去除字符串中的换行符
Oct 11 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
python实现与redis交互操作详解
Apr 21 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python 下载文件的几种方式分享
Apr 07 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 google或baidu分页代码
2009/11/26 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
jQuery实现轮播图效果
2019/11/26 jQuery
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python模块restful使用方法实例
2013/12/10 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
如何用PHP实现邮件发送
2012/12/26 面试题
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
网站推广策划方案
2014/06/04 职场文书
商家认证委托书格式
2014/10/16 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL