Вложенный для цикла Ошибка Python - PullRequest
0 голосов
/ 23 мая 2018

Я работаю с загрузкой данных с CSV.Ниже приведена ссылка для набора данных: https://drive.google.com/open?id=1emA29M1lO3q-2YQOhegKRsAdlydBkgh6

Я создал пример для той же процедуры.Это сработало.Но когда я попытался с набором данных, выскочила ошибка следующим образом:

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

Я выполняю случайный расчет 10 раз для каждой строки в кадре данных.

for i in range(len(WC2018_Fix.HomeTeam)):
    for j in range(0,10):
        TeamA = WC2018_Fix.iloc[i,0]
        TeamB = WC2018_Fix.iloc[i,1]
        ELO_1 = np.array(WC2018_Fix.iloc[i,2])
        ELO_2 = np.array(WC2018_Fix.iloc[i,3])
        ELOA  = random.random()*ELO_1
        ELOB  = random.random()*ELO_2

Может кто-нибудьпосоветуйте что происходит?

1 Ответ

0 голосов
/ 23 мая 2018

В вашем цикле вы можете проверить формат / тип значений, которые вы читаете. При умножении, если ожидаемое значение ячейки не int / float, вы можете набрать cast и затем сделать это.

for i in range(len(WC2018_Fix.HomeTeam)):
    for j in range(0,10):
        TeamA = WC2018_Fix.iloc[i,0]
        TeamB = WC2018_Fix.iloc[i,1]
        if WC2018_Fix.iloc[i,2].__class__ == str:
          var = int(WC2018_Fix.iloc[i,2]) # Convert accordingly to int
        if WC2018_Fix.iloc[i,3].__class__ == str:
          var2 = int(WC2018_Fix.iloc[i,3])
        ELO_1 = np.array(var)
        ELO_2 = np.array(var2)
        ELOA  = random.random()*ELO_1
        ELOB  = random.random()*ELO_2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...