Pandas中astype() 方法

Pandas 中,astype() 方法用于将 DataFrame 或 Series 的数据类型(dtype)转换为指定的数据类型。它是数据类型转换的常用方法,支持将列转换为多种类型,比如整数、浮点数、字符串、布尔值等。


astype() 的语法

DataFrame.astype(dtype, copy=True, errors='raise')
参数说明
  1. dtype(必需参数):

    • 目标数据类型,可以是单一类型(如 'int''float'),也可以是字典形式指定列类型(如 {列名: 类型})。
    • 支持的类型包括:
      • 标准类型:int, float, str, bool, 等。
      • Numpy 类型:numpy.int32, numpy.float64 等。
      • Pandas 类型:category, datetime64 等。
    • 示例:
      • 单列转换:astype('int')
      • 多列转换:astype({'col1': 'int', 'col2': 'float'})
  2. copy(可选参数,默认为 True):

    • 是否返回数据的副本。如果为 False,则尽量避免复制原始数据。
  3. errors(可选参数,默认为 'raise'):

    • 'raise':如果转换失败,会抛出错误。
    • 'ignore':如果转换失败,不会报错,原数据保持不变。

常见使用场景

1. 转换单列的数据类型

将单个列转换为指定数据类型。

import pandas as pd

# 示例数据
data = {'A': ['1', '2', '3'], 'B': ['4.5', '5.5', '6.5']}
df = pd.DataFrame(data)

# 转换列 A 为整数
df['A'] = df['A'].astype(int)

# 转换列 B 为浮点数
df['B'] = df['B'].astype(float)

print(df.dtypes)

输出:

A      int64
B    float64
dtype: object

2. 转换多列的数据类型

可以通过字典同时为多列指定不同的数据类型。

df = pd.DataFrame({
    'A': ['1', '2', '3'],
    'B': ['True', 'False', 'True']
})

# 同时转换多列
df = df.astype({'A': 'int', 'B': 'bool'})
print(df.dtypes)

输出:

A     int64
B    bool
dtype: object

3. 转换为分类数据(category

category 类型对于具有重复值的列可以显著节省内存。

df = pd.DataFrame({'A': ['apple', 'banana', 'apple', 'orange']})

# 转换为分类类型
df['A'] = df['A'].astype('category')
print(df.dtypes)

# 查看分类信息
print(df['A'].cat.categories)

输出:

A    category
dtype: object
Index(['apple', 'banana', 'orange'], dtype='object')

4. 处理转换错误

当某列的值不能成功转换时,可以通过 errors='ignore' 避免抛出错误。

df = pd.DataFrame({'A': ['1', '2', 'three']})

# 转换时忽略错误
df['A'] = df['A'].astype(int, errors='ignore')
print(df)

输出:

       A
0      1
1      2
2  three

5. 转换为日期时间(datetime64

astype() 也可用于转换为日期时间类型,但更推荐使用 pd.to_datetime()

df = pd.DataFrame({'A': ['2024-01-01', '2024-02-01']})

# 转换为日期类型
df['A'] = df['A'].astype('datetime64[ns]')
print(df.dtypes)

输出:

A    datetime64[ns]
dtype: object

6. 转换为布尔类型

可以将 0、1 或字符串转换为布尔值。

df = pd.DataFrame({'A': [0, 1, 0, 1]})

# 转换为布尔类型
df['A'] = df['A'].astype(bool)
print(df.dtypes)

输出:

A    bool
dtype: object

注意事项

  1. 转换失败时的错误处理:

    • 默认情况下(errors='raise'),如果某些值不能成功转换,会抛出错误。
    • 如果希望忽略错误,可以设置 errors='ignore'
  2. 丢失精度:

    • 将浮点数转换为整数时,可能会丢失精度。例如:
      df['A'] = df['A'].astype(int)
      
      如果列 A 包含小数,将抛出错误。
  3. 避免数据拷贝:

    • 如果只需要修改原数据类型而不创建副本,可以设置 copy=False,但需谨慎操作,防止意外修改原数据。
  4. 处理空值(NaN):

    • 如果列包含空值,将数据类型转换为整数可能失败,因为空值默认是浮点类型。

总结

  • astype() 是 Pandas 中用于类型转换的重要方法,适用于大多数类型的转换需求。
  • 通过字典形式可以一次性为多个列指定类型。
  • 使用 errors='ignore' 可以避免因为数据问题导致的转换失败。
  • 对于复杂的类型转换(如日期时间),建议结合 pd.to_datetime() 等专用方法使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914869.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【thm】 Investigating Windows

0x00 rdp连接目标机器 apt install rdesktop 我们直接在kali里面安装这个,然后去连接 rdesktop 10.10.187.161 然后直接输入用户名密码就可。 0x01 hacker的任务 查看系统的信息,我们直接在命令行中输入systeminfo就可以直接查看。 然后我们输入 Get…

Python爬虫知识体系-----requests-----持续更新

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新:https://blog.csdn.net/grd_java/article/details/140574349 文章目录 一、安装和基本使用二、get请求三、post请求四、代理 一、安装和基本使用 和解析库urllib几乎一摸一样,但是…

Netty篇(入门编程)

目录 一、Hello World 1. 目标 2. 服务器端 3. 客户端 4. 流程梳理 💡 提示 5. 运行结果截图 二、Netty执行流程 1. 流程分析 2. 代码案例 2.1. 引入依赖 2.2. 服务端 服务端 服务端处理器 2.3. 客户端 客户端 客户端处理器 2.4. 代码截图 一、Hel…

酯化反应干催化剂树脂

油酸酯和丙三醇的合成反应: 油酸酯和丙三醇的合成反应是一个酯化反应:酯化反应的基本原理和条件, 在这个反应中,丙三醇(甘油)和油酸反应生成三酸甘油酯(油酸酯)和水。这种反应通常在…

Java 值传递详解

目录 形参&实参 值传递&引用传递 为什么 Java 只有值传递? 案例 1:传递基本类型参数 案例 2:传递引用类型参数 1 案例 3:传递引用类型参数 2 引用传递是怎么样的? 为什么 Java 不引入引用传递呢&#x…

Hadoop(环境搭建篇)

这里我用的是ubnatu22.4的系统,请大家严格按照这个系统来安装 一、网络设置 1、打开虚拟机的编辑,并选择虚拟网络编辑器 2、点击更改设置 3、更改IP 二、更改主机名 1、打开终端 2、输入以下命令 hostnamectl set-hostname master 3、然后关闭终端在…

深入浅出研究AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各…

C语言数据结构与算法--简单实现栈的出栈与入栈

(一)栈的基本概念 栈(Stack)是限定仅在表尾进行插入和删除操作的线性表,如铁路调度。如下 图: (二)栈的的表现形式 栈有两种表示形式:栈的表示和实现、栈的 链式表示。 1.栈的表示…

数据分析-46-时间序列显示之如何精准可视化多个时间序列数据

文章目录 1 可视化1.1 可视化的重要性1.2 数据加载探索2 可视化单个时间序列2.1 无连接线的散点图2.2 带连接线的散点图2.3 无点的线图2.4 填充区域的线图3 可视化多个时间序列3.1 无连接的散点图(差的设计)3.2 带连接的散点图(好的设计)3.3 直接标注的曲线(优的设计)4 参考附录…

ubuntu24.04播放语音视频

直接打开ubuntu自带的video播放.mp4文件,弹窗报错如下: 播放此影片需要插件 MPEG-4 AAC 编码器安装方式: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly sudo apt install ffmpeg验证AA…

python第七次作业

01.设计一个函数,可以传入一个或多个单词的字符串,并返回该字符串,但所有五个或更多字母的单词都前后颠倒 a input("输入:") print(a) #将一句话以空格为分界拆分为单个单词 b a.split(" ") ls_1 [] ls_2 []for i i…

精挑细选的五款GIS工具箱,你需要了解的优缺点

本文将为大家介绍五款功能各异的GIS工具箱,包括GISBox、QGIS、MapTiler、Saga GIS和Whitebox GAT。每款工具箱都有其独特的功能和应用场景,能够满足不同类型的GIS任务需求。无论是数据处理、空间分析、影像处理还是可视化需求,这些工具都能为…

Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】

Trimble X12 三维激光扫描仪凭借清晰、纯净的点云数据和亚毫米级的精度正在改变游戏规则。今天的案例我们将与您分享,X12是如何帮助专业测量咨询公司OR3D完成的一个模拟受损平转桥运动的项目。 由于习惯于以微米为单位工作,专业测量机构OR3D是一家要求…

Appium配置2024.11.12

百度得知:谷歌从安卓9之后不再提供真机layout inspector查看,仅用于支持ide编写的app调试用 所以最新版android studio的android sdk目录下已经没有了布局查看工具... windows x64操作系统 小米k30 pro手机 安卓手机 Android 12 第一步&#xff1a…

ctfshow-web入门-反序列化(web271-web278)

目录 1、web271 2、web272 3、web273 4、web274 5、web275 6、web276 7、web277 8、web278 laravel 反序列化漏洞 1、web271 laravel 5.7&#xff08;CVE-2019-9081&#xff09; poc <?php namespace Illuminate\Foundation\Testing{use Illuminate\Auth\Generic…

005_ipc概述及信号量

【信号量】 在Linux系统中&#xff0c;信号量主要用于进程间的同步。Linux提供了两种类型的信号量&#xff1a;POSIX信号量和System V信号量&#xff0c;信号量&#xff08;Semaphore&#xff09;是一种同步机制&#xff0c;用于多线程或进程间的同步和互斥。信号量可以控制对…

SSA-CNN-LSTM-MATT多特征分类预测

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

有手就会:java 环境变量配置 - 包含windows、macos、linux和vscode的详细配置步骤

java 环境变量配置 本文旨在帮助用户完成Java环境变量的配置&#xff0c;涵盖Windows、Linux和macOS三大操作系统。对于每个系统&#xff0c;不仅提供了通过命令行设置环境变量的方法&#xff0c;还介绍了如何在VSCode中进行相应配置以启动Java项目&#xff0c;确保开发者能够…

Error response from daemon:

指出在尝试解析 auth.docker.io&#xff08;Docker Hub 的一个域名&#xff0c;用于身份验证和镜像拉取&#xff09;时&#xff0c;DNS 查询超时了。这通常意味着你的 Docker 客户端无法通过配置的 DNS 服务器&#xff08;在这个案例中是 &#xff09;来解析域名 解决方案&…

127.WEB渗透测试-信息收集-ARL(18)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a; 这一行是对应使用的指纹 这个界面是springbot 如果存在漏洞&#xff0c;他的信息里面可…