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://www.mcbbbk.com/newsview666481.html
上一篇: Python 入门 |
下一篇: 想要可爱的h5小游戏?萌宠模板大 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352