I have a problem when running my code in python. It worked perfectly fine in python 3.6, but after an upgrade to python 3.7 the code doesn't work anymore.

We have read a number of excelfiles into python as data frames, and we have to compute 5 columns as a weighted mean.

We've tried different dtype settings whit no luck, but without any knowledge in how to use them properly. We tried to convert from int to float but with no succes.

We have following code

  1. We have a dataframe containing numbers and strings
<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

And it goes wrong when we're trying to multiply a set of the columns

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

We receive the following error:

TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U21') dtype('<U21') dtype('<U21')

We expect to compute af range the columns from 1-5

1 Answers

0
Community On

I think you need to convert the (4 Jeg synes, at eksamens form og indhold passede til kursets læringsmål. [Se læringsmål], Indgår(4)) column to int64 (it currently is of type object), just like some similar columns in your DataFrame.

pd.to_numeric(df.feature_name)