基于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标准异常和异常处理详解
Feb 02 Python
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
对Python中gensim库word2vec的使用详解
May 08 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
学习python可以干什么
Feb 26 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
python中的colorlog库使用详解
Jul 05 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
详解python3类型注释annotations实用案例
Jan 20 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
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
Python多线程编程简单介绍
2015/04/13 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
文秘自荐信
2013/10/20 职场文书
《手指教学》反思
2014/02/14 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
2014年合同管理工作总结
2014/12/02 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
小数乘法教学反思
2016/02/22 职场文书