• pandas dataframe 数据格式转化 基础


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 weixin_46530456 2024-03-24 16:49 采纳率: 0% 浏览 3 首页/ 编程语言 / pandas dataframe 数据格式转化 基础 python数据挖掘大数据 我有一个 dataframe 在 Pandas 中,其最后三列名字为 'Replicate a','Replicate b','Replicate c'。我想将这三列转化为 floa32格式,并使用如下代码: df_deal.iloc[:,-3:] = df_deal.iloc[:,-3:].apply(pd.to_numeric, errors='coerce').astype('float32') # 这里用位置索引,索引最后三列 但是这个代码跑完以后,数据格式并有变化依然是object print(df_deal.iloc[:,-1].dtypes) print(df_deal.iloc[:,-2].dtypes) print(df_deal.iloc[:,-3].dtypes) 结果全是object有人说,多列索引的时候得到的是副本,于是我使用循环一列一列修改: for i in range(-3,0): df_deal.iloc[:,i] = df_deal.iloc[:,i].apply(pd.to_numeric, errors='coerce').astype('float32') 但结果依然是 object 数据后三列见图: 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    3条回答 默认 最新

    • 码农阿豪 Java领域优质创作者 2024-03-24 16:50
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      问题分析: 首先,使用 df.iloc[:, -3:] 进行索引,会得到一个包含最后三列的子 DataFrame。这个子 DataFrame 应该是原 DataFrame 的一个视图,而不是副本(Pandas 中有两种索引方式:标签索引和位置索引。使用位置索引时,如果传入的是一个列表或切片,生成的子 DataFrame 是原 DataFrame 的视图。使用标签索引时,生成的子 DataFrame 是原 DataFrame 的副本)。 但这并不影响对子 DataFrame 进行操作,因为 Pandas 的操作都是基于数据的复制,这会自动处理数据的副本和视图的问题。 其次,循环修改每一列时,使用了 df.iloc[:, i],这里的 i 是一个整数,表示倒数第几列,但是在 Python 中,索引是从 0 开始的。因此,在这个循环中,i 的范围应该是 -3 到 -1。 最后,数据格式没有发生变化的原因,很可能是数据中包含了一些无法转换为 float32 格式的值,例如缺失值或非数字值。这些值将会被转换为 NaN。需要检查数据中是否存在这样的值。 解决方案: 可以尝试使用 Pandas 中的 pd.to_numeric() 函数,将数据转换为 float32 格式。该函数可以方便地将数据中的非数字值转换为 NaN。 代码示例:
      import pandas as pd
      # 读取数据
      df = pd.read_csv('data.csv')
      # 将最后三列转换为 float32
      df.iloc[:, -3:] = df.iloc[:, -3:].apply(pd.to_numeric, errors='coerce').astype('float32')
      # 检查数据类型
      print(df.iloc[:, -1].dtypes)
      print(df.iloc[:, -2].dtypes)
      print(df.iloc[:, -3].dtypes)
      
      评论
      weixin_46530456 2024-03-24 16:56

      这两得到的依然都是object,没有转化

      回复
    • weixin_46530456 2024-03-24 16:51
      关注

      我又使用下面代码,却可以转化

      df_deal[['Replicate a','Replicate b','Replicate c']] = df_deal[['Replicate a','Replicate b','Replicate c']].astype('float32') 
      

      有人知道这是为什么?

      评论
    • GISer Liu 2024-03-29 20:32
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      You've reached our limit of messages per hour. Please try again later.

      如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

      用户答题指南

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    Python子进程管理与进程信息获取
    牛客网:主持人调度
    高效实用|ChatGPT指令/提示词/prompt/AI指令大全,基础版
    模板方法模式在交易策略开发中的应用
    MATLAB R2018a简介
    博弈论学习笔记(1)——知识要点回顾(自用)
    七段显示译码器
    STM32Cube工程转为Keil工程的方法介绍
    HCIP-综合实验 知识覆盖全面 建议收藏
    【手撕数据结构】(三)顺序表和链表
  • 原文地址:https://ask.csdn.net/questions/8078219