基于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 web程序
Sep 11 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
python实现中文分词FMM算法实例
Jul 10 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
Python学生信息管理系统修改版
Mar 13 Python
python字典快速保存于读取的方法
Mar 23 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
代码实例讲解python3的编码问题
Jul 08 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
简单了解Django项目应用创建过程
Jul 06 Python
带你学习Python如何实现回归树模型
Jul 16 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实现定时器任务(Timer)
2015/07/31 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
表达自我的市场:Society6
2018/08/01 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
文字自荐书范文
2014/02/10 职场文书
人事科岗位职责范本
2014/03/02 职场文书
物流管理专业求职信
2014/05/29 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
检讨书大全
2015/01/27 职场文书
详解python的内存分配机制
2021/05/10 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android