问:采用numpy定义学生姓名的类型为U32,但有运行结果一直提示could not convert string to float: ‘高二(1)班’
源代码:报错 peoples=np.array(df1.values,dtype=persontype)
ValueError: could not convert string to float: ‘高二(1)班’
疑问:采用numpy定义学生姓名的类型为U32,但有运行结果一直提示could not convert string to float: ‘高二(1)班’;
import numpy as np
import pandas as pd
LocalDir = r"D:\AppDate\Python-Data\经纬度按距离去重"
LocalDirInput = LocalDir + "\\" + "input"
InputFileName1 = LocalDirInput + "\\" + "input输入数据.xlsx"
SheetName1 = "Sheet1"
HeaderList1 = ["班级名称", "学生姓名", "数学", "语文"]
df1 = pd.read_excel(InputFileName1, sheet_name=SheetName1, skiprows=0, usecols=HeaderList1, engine="openpyxl")
print(df1)
print(df1.dtypes)
persontype = np.dtype({
'names':['class','name','chinese','math'],
'formats':['U32','U32','f','f']
})
print(persontype)
peoples = np.array(df1.values,dtype=persontype)
print(peoples)
运行结果:
班级名称 学生姓名 数学 语文
0 高二(1)班 陈楚茵 134 121
1 高二(17)班 陈康尧 119 120
2 高二(4)班 赖佩阳 134 113
3 高二(17)班 李棋茹 106 113
4 高二(4)班 李钦淇 126 110
5 高二(17)班 林榕玲 123 117
6 高二(4)班 林纾均 138 121
7 高二(1)班 朱志凡 135 97
班级名称 object
学生姓名 object
数学 int64
语文 int64
dtype: object
[(‘class’, ‘<U32’), (‘name’, ‘<U32’), (‘chinese’, ‘<f4’), (‘math’, ‘<f4’)]
Traceback (most recent call last):
File “D:/AppDate/pythonProject/Lon-Lat/def01.py”, line 18, in
peoples = np.array(df1.values,dtype=persontype)
ValueError: could not convert string to float: ‘高二(1)班’
运行正确的程序:这两者区别是什么?
persontype = np.dtype({
'names':['name','chinese','english','math'],
'formats':['U32','i','i','f']
})
peoples = np.array([("张飞",66,65,30.5),
("关羽",95,85,98.5),
("赵云",93,92,96.5),
("黄忠",90,88,77),
("典韦",80,90,90.5)],dtype=persontype)