鱼C论坛

 找回密码
 立即注册
查看: 1984|回复: 15

[已解决]DataFrame的数据格式无法转换的疑问

[复制链接]
发表于 2019-4-8 08:36:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
数据库中的数据,为什么无法按照要求转换成需求的格式?
1. 我先将数据中的数值0,及空格符号,替换成空值。
2. 用dtypes命令,查看数据格式,发现数据中的不少格式是字符串、
3. 用astype命令,想将数据由字符串转换成浮点型。结果发现报错:could not convert string to float。 ---这个问题,我也网搜过,说是可能原始数据中存在空格才会导致这个情况。。因此,我事先将空格替换成了空值,但是仍旧会报这个问题。

因此,请教下各位高手,这个到底是怎么回事?
3.jpg 1.jpg 2.jpg
最佳答案
2019-4-8 10:48:21
>>> import numpy as np      
>>> data1.replace(0,np.nan)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-8 08:46:52 | 显示全部楼层
我要这步操作的想法,是准备对数据进行标准化处理。
考虑到原始数据如果为0,其标准化的数据会变成某个值,而不会是0.因此才考虑在标准化前,将数据0替换成空值。
但是刚才发现,如果执行了这步替换的操作,原始数据的格式,就变化了(由浮点型转换成了字符串,而且还不能转换回来)。。。
完全被搞蒙了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 08:49:19 | 显示全部楼层
你把你要转换的部分打印下,肯定还是格式不符,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 08:54:59 | 显示全部楼层
  1. def astypeFloat(value):
  2.     try:
  3.         return float(value)
  4.     except:
  5.         return np.nan

  6. series.map(astypeFloat)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 09:13:46 | 显示全部楼层
塔利班 发表于 2019-4-8 08:49
你把你要转换的部分打印下,肯定还是格式不符,

想请问下,我的思路步骤,是否合理。。
我个人感觉是对的。。但是就像我在2楼说的,如果不对原始数据进行数据0的替换的话,数据格式就没有问题(原始数据就是浮点型的),而数值替换成空值之后,则变成了字符串格式,还转换不回来。。
我是没太搞懂,为什么会格式不符呢?我就多了这步替换的操作,怎么会导致格式不符。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 09:20:57 | 显示全部楼层
每次都看不到你的数据,我哪知道是怎么处理的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 09:24:26 | 显示全部楼层
塔利班 发表于 2019-4-8 09:20
每次都看不到你的数据,我哪知道是怎么处理的


数据有些不便提供啊。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 10:00:04 | 显示全部楼层
塔利班 发表于 2019-4-8 09:20
每次都看不到你的数据,我哪知道是怎么处理的

提供个示例数据

数据.zip

5 KB, 下载次数: 4

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 10:30:28 | 显示全部楼层
你数据读出来本来就都是float为什么还转换成object
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 10:44:27 | 显示全部楼层
塔利班 发表于 2019-4-8 10:30
你数据读出来本来就都是float为什么还转换成object

数据中含有数值为0的数据,我要将这些数据替换成空值。。(因为我后面要对空值进行填充,如果数值0存在,后面就没法对0进行填充)
就是这个替换的步骤执行了之后,数据就变成了object的格式,而且无法转换回来了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 10:48:21 | 显示全部楼层    本楼为最佳答案   
>>> import numpy as np      
>>> data1.replace(0,np.nan)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 10:51:27 | 显示全部楼层
塔利班 发表于 2019-4-8 10:48
>>> import numpy as np      
>>> data1.replace(0,np.nan)

我用data1 =data1.replace(0,'') 为什么不行?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 10:57:01 | 显示全部楼层
你这就是给转换了啊,这表示的不是空,而是空字符串,就改变了类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 10:59:28 | 显示全部楼层
塔利班 发表于 2019-4-8 10:57
你这就是给转换了啊,这表示的不是空,而是空字符串,就改变了类型

嗯,这个理解。
问题在于,我再把这些数据格式转换回来,用astype命令,没法将这些被转换的数据格式,再次转换回来。。会报错。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-8 11:01:51 | 显示全部楼层
不说pandas,就是空字符串,你用float()能转换吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-8 11:02:52 | 显示全部楼层
塔利班 发表于 2019-4-8 11:01
不说pandas,就是空字符串,你用float()能转换吗

....你说得对。。钻牛角尖了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-8 07:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表