python中的dtype混乱。遇到不同dtypes的错误时该怎么办

时间:2019-04-29 11:36:37

标签: python pandas

在python中运行代码时遇到问题。它在python 3.6中工作得很好,但是在升级到python 3.7之后,该代码不再起作用。

我们已经将许多excel文件读入python作为数据帧,并且必须计算5列作为加权均值。

我们尝试了不同的dtype设置,但是没有运气,但是没有任何如何正确使用它们的知识。我们试图将int转换为float但没有成功。

我们有以下代码

  1. 我们有一个包含数字和字符串的数据框
<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的列

1 个答案:

答案 0 :(得分:0)

我认为您需要将(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)