python - python中的dtype混淆。遇到不同 dtype 的错误时该怎么办
问题描述
在 python 中运行我的代码时遇到问题。它在 python 3.6 中运行良好,但在升级到 python 3.7 后,代码不再工作。
我们已经将许多 excelfiles 作为数据帧读入 python,我们必须计算 5 列作为加权平均值。
我们尝试了不同的 dtype 设置,但没有成功,但不知道如何正确使用它们。我们试图从 int 转换为 float 但没有成功。
我们有以下代码
- 我们有一个包含数字和字符串的数据框
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 56 entries, 0 to 55
Data columns (total 25 columns):
(Course, Coursenummer) 56 non-null int64
(Course, Coursenavn) 56 non-null object
(Course, Semester) 56 non-null object
(Course, Antal personer som kunne besvare dette evalueringsskema) 56 non-null int64
(Course, Antal personer som har besvare dette evalueringsskema) 56 non-null int64
(Course, Antal personer som har tilkendegivet ikke at have fulgt kurset) 56 non-null int64
(Course, Svarprocent) 56 non-null int64
(1 Har du fået den afsluttende karakter?, Indgår(1)) 56 non-null object
(1 Har du fået den afsluttende karakter?, Ja) 56 non-null int64
(1 Har du fået den afsluttende karakter?, Nej) 56 non-null int64
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), Indgår(2)) 56 non-null object
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), Helt enig) 56 non-null int64
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), [Blank B] (2)) 56 non-null int64
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), [Blank C] (2)) 56 non-null int64
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), [Blank D] (2)) 56 non-null int64
(2 Jeg synes, at eksamen stemte overens med undervisningen på kurset (formen, aktiviteterne, indholdet, sværhedsgraden), Helt uenig) 56 non-null int64
(3 Begrundelse / kommentarer:, Indgår(3)) 56 non-null object
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], Indgår(4)) 56 non-null object
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], Helt enig(4)) 56 non-null int64
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], [Blank B] (4)) 56 non-null int64
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], [Blank C] (4)) 56 non-null int64
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], [Blank D] (4)) 56 non-null int64
(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål.
[Se læringsmål], Helt uenig(4)) 56 non-null int64
(5 Begrundelse / kommentarer:, Indgår(5)) 56 non-null object
(6 Øvrige kommentarer / forslag til forbedringer af eksamen i dette kursus:, Indgår(6)) 56 non-null object
dtypes: int64(17), object(8)
memory usage: 11.0+ KB
当我们试图将一组列相乘时会出错
def computeColumn(df, offset):
col = np.zeros(df.shape[0],dtype=int)
for i in range(5):
col+=df.iloc[:,offset+i]*int(5-i)
col/=df.iloc[:,offset:offset+5].sum(axis=1)
return col
我们收到以下错误:
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U21') dtype('<U21') dtype('<U21')
我们期望计算从 1-5 的列
解决方案
我认为您需要将该(4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål. [Se læringsmål], Indgår(4))
列转换为 int64(它当前是 object 类型),就像 DataFrame 中的一些类似列一样。
pd.to_numeric(df.feature_name)
推荐阅读
- wpf - 可重用用户控件中的 WPF 验证错误样式?
- mongodb - 无法在 alpine linux 中安装 php7-mongodb
- java - JSP 页面中未显示的变量
- php - 选项值与正确值不匹配
- php - 如何通过 __set() 方法使用 PDO::FETCH_CLASS?
- android - 无法使用 com.tns 查找课程
- sql - 将姐妹表值应用于主表中的所有父/子关系
- automation - 如何使用 botium 绑定更改 Botium 测试的测试套件名称。当前它是默认名称
- linux - 不使用pop操作读取数据有优势吗?
- ios - iOS:隐藏内容标签时如何让容器视图自动缩小其高度?