首页 > 分享 > Pandas dtype object 对象转化成float数组以及String Replace Error 解决方法

Pandas dtype object 对象转化成float数组以及String Replace Error 解决方法

新手友好的纯小白入门指南,因为我自己也是小白。

Pandas读取csv文件后遇到了问题,读入的数据DataFrame格式可以理解为字典,每一个column对应csv表格中的一列。为了进行下一步处理,需要将原来的数据转化为浮点数(float)格式。但是使用dtype()查看了一下,发现需要读数据的那一列的元素格式是object。是我比较菜,python才入门一个星期,实在不知道这是什么东东。

读出来的数据是这样的,格式是123?45的样子。这里的问号?其实应该改成小数点的。

所以现在的任务是把123?45变成123.45,并且存到一个列表里。

首先想到的就是直接进行str.replace()操作,但是,很不幸,没有用,白白折腾了一晚上。

于是想到是不是因为是object对象的问题呢,那么试着把object对象转化成string也许就可以操作了,结果……

string和object他俩就是一个东西啊!!!!!

传送门:https://blog.csdn.net/a8131357leo/article/details/79635866

自然,对整个数组进行str.replace()之后检查得到的还是object对象了。

在stackoverflow上搜了一下发现超级多人也在问这个问题。最后发现如果是对整个

data['Latitude'] = data['Latitude'].astype('str')

然后直接

data['Latitude'] = data['Latitude']str.replace(x1, "? ", ".")

进行操作是无效的。但是!对单个元素的操作是有效的。也就是需要加上一个Series对象遍历的过程;并且在遍历的过程中,使用正则表达式搜查到符合数据格式的条目,然后直接在Series对象内部,逐个进行格式匹配,replace,和计算对应的浮点数的过程。

data = pd.read_csv('/Users/nie/Downloads/test2.csv', encoding = 'utf-8')

data['Latitude'] = data['Latitude'].astype('str')

data1 = []

for x in range(0, len(data['Latitude'])):

x1 = data['Latitude'][x]

x2 = str.replace(x1, "? ", ",")

num = 0

if re.match("dd,dd.ddd",x2):

num = float(x2[3]) * 10 + float(x2[4]) + float(x2[6]) * 0.1 + float(x2[7]) * 0.01 + float(x2[8]) * 0.001

num = round(num, 3)

data1.append(num)

print(data1)

至于为什么需要单个元素进行处理,我也不是很清楚……但是实测有效。

相关知识

Pandas dtype object 对象转化成float数组以及String Replace Error 解决方法
JavaScript调试技巧之console.log()详解
第十二课 从宠物商店案例看DAPP架构和WEB3.JS交互接口
Java DTO(data transfer object)的使用
基于深度学习的驾驶行为预测方法
区块链100讲:从宠物商店案例看DAPP架构和WEB3.JS交互接口
Object类、多态
Java学习笔记——Object类、多态、final
使用字节数组创建String后通过getBytes()得到的数组与创建时不同
string[] arr = {“lmn”, “abc”,“jk”,'d

网址: Pandas dtype object 对象转化成float数组以及String Replace Error 解决方法 https://m.mcbbbk.com/newsview666481.html

所属分类:萌宠日常
上一篇: Python 入门
下一篇: 想要可爱的h5小游戏?萌宠模板大