文章目录

  • 明确指定数据的类型
    • 通过dtypes属性进行查看
    • 创建Pandas对象指定数据类型
  • 转换数据类型
    • 通过astype()方法强制转换数据的类型
    • 通过to_numeric()函数转换数据类型

明确指定数据的类型

通过dtypes属性进行查看

import pandas as pddf = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})
print("df.dtypes:\n", df.dtypes)
print("df:\n", df)

输出结果:

df.dtypes:A    object
B    object
C    object
dtype: object
df:A    B    C
0  1    9    x
1  2  -80  5.9
2  4  5.3    0

创建Pandas对象指定数据类型

data = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '80', '5']},dtype='int')
print("data:\n", data)
print("data.dtypes:\n", data.dtypes)

输出结果:

data:A   B
0  1   9
1  2  80
2  4   5
data.dtypes:A    int32
B    int32
dtype: object

转换数据类型

通过astype()方法强制转换数据的类型

astype(dypte, copy=True, errors = ‘raise’, **kwargs)

上述方法中部分参数表示的含义如下:

dtype:表示数据类型

copy:是否建立副本,默认为True

errors:错误采取的处理方式,可以取值为raise或ignore,默认为raise。其中raise表示允许引发异常,ignore表示抑制异常。


运用astype()方法将DataFrame对象df中B列数据的类型转换为int类型:

print("df['B']:\n", df['B'])
print("df['B'].astype:\n", df['B'].astype(dtype='float'))
df['B']:0      9
1    -80
2    5.3
Name: B, dtype: object
df['B'].astype:0     9.0
1   -80.0
2     5.3
Name: B, dtype: float64

之所以没有将所有列进行类型转换是因为C列中有非数字类型的字符,无法将其转换为int类型,若强制转换会出现ValueError异常。(当参数errors取值ignore时可以抑制异常,但抑制异常后输出结果仍是未转换类型之前的对象——也就是并未进行数据类型转换的操作,只是不会报错罢了

print("df['C']:\n", df['C'])
print("df['C'].astype(errors='ignore'):\n", df['C'].astype(dtype='float', errors='ignore'))

输出结果:

df['C']:0      x
1    5.9
2      0
Name: C, dtype: object
df['C'].astype(errors='ignore'):0      x
1    5.9
2      0
Name: C, dtype: object

通过to_numeric()函数转换数据类型

to_numeric()函数不能直接操作DataFrame对象

pandas.to_numeric(arg, errors=‘raise’, downcast=None)

上述函数中常用参数表示的含义如下:

arg:表示要转换的数据,可以是list、tuple、Series

errors:错误采用的处理方式可以取值除raise、ignore外,还可以取值coerce,默认为raise。其中raise表示允许引发异常,ignore表示抑制异常。

to_numeric()函数较之astype()方法的优势在于解决了后者的局限性:只要待转换的数据中存在数字以外的字符,在使用后者进行类型转换时就会出现错误,而to_numeric()函数之所以可以解决这个问题,就源于其errors参数可以取值coerce——当出现非数字字符时,会将其替换为缺失值之后进行数据类型转换。


se = pd.Series(df['A'])
se1 = pd.Series(df['B'])
se2 = pd.Series(df['C'])
print("df['A']:\n", df['A'])
print("to_numeric(df['A']):\n", pd.to_numeric(se))
print("df['B']:\n", df['B'])
print("to_numeric(df['B']):\n", pd.to_numeric(se1))
print("df['C']:\n", df['C'])
print("to_numeric(df['C'], errors='ignore'):\n", pd.to_numeric(se2, errors='ignore'))
print("to_numeric(df['C'], errors='coerce'):\n", pd.to_numeric(se2, errors='coerce'))

输出结果:

df['A']:0    1
1    2
2    4
Name: A, dtype: object
to_numeric(df['A']):0    1
1    2
2    4
Name: A, dtype: int64
df['B']:0      9
1    -80
2    5.3
Name: B, dtype: object
to_numeric(df['B']):0     9.0
1   -80.0
2     5.3
Name: B, dtype: float64
df['C']:0      x
1    5.9
2      0
Name: C, dtype: object
to_numeric(df['C'], errors='ignore'):0      x
1    5.9
2      0
Name: C, dtype: object
to_numeric(df['C'], errors='coerce'):0    NaN
1    5.9
2    0.0
Name: C, dtype: float64

Python更改数据类型——astype()方法和to_numeric()函数相关推荐

  1. [转载] python 字符串查找的4个方法和count函数

    参考链接: Python字符串 count 方法 python 字符串查找的4个方法和count函数 所谓的字符串查找方法就是查找子串在字符串中的位置和出现的次数 python 字符串查找有4个方法, ...

  2. python中的format方法和int方法

    一.背景 我们在进行计算机进制转换的时候需要用到一些其他的进制,最常见的就是二进制,八进制,16进制.这里介绍两种方法去完成进制之间的转换. 二.使用 1 format方法 format方法中包含两个 ...

  3. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

    Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些 发布时间:2020-11-05 17:11:48 来源:亿速云 阅读:95 作者:Leah 本篇文章给大家分享的是有关P ...

  4. python字典的setdefault方法和get方法

    在python的字典对象中,可以直接使用键名获取键值,像这样: >>> d = {"x":1,"y":2} >>> d[&q ...

  5. python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别

    对我当前工程进行全部测试需要花费不少时间.既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率. 但优点也是缺点,tmpfs 只把结果 ...

  6. JQuery中的each()方法和$.each()函数的使用

    1.each()方法的使用 JQuery提供了 each() 方法用于遍历匹配的元素信息.以每一个匹配的元素作为上下文来执行一个函数.每次执行传递进来的函数时,函数中的 this 关键字都指向一个不同 ...

  7. 判断文件结束的几种方法和eof()函数

    看下面一段代码: ofstream ofs("a.txt"); int n = 1; while (--n) {     //不进入循环体   ofs<<n<&l ...

  8. python类的构造方法和assert的使用,用MethodType动态绑定类方法

    一.通过__init__构造方法赋值 import types class C:sex = 'male'def __init__(self, age):self.age = agedef show(s ...

  9. 忘记AppleID的密码,快速更改密码的方法和phone苹果商店显示您的ID已被停用的解决办法

    1.点击手机页面的设置,在设置的页面选择iTunes Store和App Store选项. 2.在iTunes Store和App Store的页面,点击Apple ID选项 3.在弹出的菜单中选择i ...

最新文章

  1. telegram bot 机器人 发送 加粗 斜体 字体
  2. ssh代理登录内网服务器
  3. 倒数日电脑版_应用日报|iOS 或更名为 iPhoneOS,倒数日 Mac 版上线限时免费
  4. 操作系统的SPOOLING技术
  5. 2021住房消费品质服务报告
  6. javascript使用_用JavaScript唤醒沉睡的城市
  7. Linux权限、角色作用
  8. 20211102:数字滤波器按照实现结构的分类及其优缺点总结
  9. FreeMarker语法之表达式(二)
  10. macos复制粘贴快捷键 快速_mac复制粘贴快捷键
  11. 使用秀米编排点击展示H5
  12. c216芯片组服务器,几无改变 9系芯片组架构及新功能_Intel主板_主板评测-中关村在线...
  13. pwc普华永道 信息技术(上海)面试
  14. PPT插件(islide)
  15. 自考知识电脑图计算机组成原理,自考“计算机组成原理”考试大纲
  16. KY122 找出直系亲属
  17. 调用MapReduce对文件各个单词出现的次数进行统计
  18. mac下git使用ssh时候的一个小问题:Permission denied (publickey). fatal: Could not read from remote repository.
  19. 服务器删除登录日志文件,CentOS查看登录日志及其它安全日志 清空删除系统日志的方法...
  20. 《少有人走的路:心智成熟的旅程》笔记

热门文章

  1. 下拉选择框 其他_列表框 vs 下拉列表,哪个更好?
  2. TI Sitara AM335x系统之AM335x uboot spl分析
  3. centos7 安装redis_Redis6安装(上) - 单机单实例
  4. 如何使用网上下载的arcgis工具箱,报错汇总
  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(安装TensorFlow2.0)
  6. 【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)
  7. 关于C#程序的单元测试
  8. Jenkins Ci系列目录
  9. html5设置视频显示第一帧,如何检测HTML5视频何时播放第一帧?
  10. oracle 采购 日历,Oracle日历程序