当前位置: 首页 > news >正文

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() 等专用方法使用。

http://www.mrgr.cn/news/71856.html

相关文章:

  • 11.21 深度学习-tensor常见操作
  • JMeter监听器与压测监控之 InfluxDB
  • android 性能分析工具(03)Android Studio Profiler及常见性能图表解读
  • 「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型
  • Cmakelist.txt之win-c-udp-client
  • 模糊控制系统的设计(取材bilibili_蓝天的季洁)
  • 「Mac玩转仓颉内测版5」入门篇5 - Cangjie控制结构(上)
  • 大数据 ETL + Flume 数据清洗 — 详细教程及实例(附常见问题及解决方案)
  • 10款视频剪辑工具使用感受与适用场景推荐!!!!
  • kaggle 如何利用API下载数据集
  • Linux驱动开发(5):平台设备驱动
  • Java 网络通信之 Socket 编程全解析
  • 番外篇 | 关于YOLO11算法的改进点总结
  • 【java】如何理解线程安全问题
  • 轻松搭建自己的RAG知识库
  • 论文2—《基于柔顺控制的智能神经导航手术机器人系统设计》文献阅读分析报告
  • 代码训练营 day64|算法优化、带负权值图的最短路径
  • 一维前缀和/差分,二维前缀和/差分
  • 【时时三省】(C语言基础)函数介绍strtok
  • 概率论中的PMF、PDF和CDF
  • 关于CJS,AMD,CMD,UMD的了解
  • 推荐一款强大的行车记录仪播放器:Dashcam Viewer Plus
  • Java小型项目-音乐评论分析
  • 论文解读:CARAT
  • cache(五)Write-through,Write-back,Write-allocate,No-write-allocate
  • 【t365】基于springboot的高校疫情防控系统