#python
#питон
Вопрос:
Я пытаюсь вычислить средние цели по команде из набора данных совпадений и выдал следующую ошибку: «Произошло исключение: TypeError принудительное преобразование в Юникод: нужна строка или буфер, найден кортеж» Мой код;
matches = open('matches.csv', 'r')
data_read = csv.reader(matches, delimiter = ',')
matches = []
for row in data_read:
matches.append((row[0], row[1], row[2], row[3]))
team=['Bandari','Chemelil','Gor Mahia','Kakamega Homeboyz','Kariobangi Sharks','Kenya CB',
'Leopards','Mathare Utd.','Mount Kenya United', 'Nzoia Sugar','Posta Rangers','Sofapaka',
'Sony Sugar','Tusker','Ulinzi Stars','Vihiga United', 'Western Stima', 'Zoo']
results=[]
for file in matches:
avgs=[]
**for object in team:**
goalsscored=0
with open(file) as f:
reader=csv.DictReader(f)
rows=[ row for row in reader if row['Home_Team']==object]
for row in rows:
for rows in row[HTgoals]:
goalsscored=goalsscored int(row['HTgoals'])
with open(file) as f:
reader=csv.DictReader(f)
rows2=[ row for row in reader if row['Away_Team']==object]
for row in rows2:
for rows2 in row['ATgoals']:
goalsscored=goalsscored int(row['ATgoals'])
kk=df.apply(pd.value_counts)
avgs.append(goalsscored/kk)
results.append(avgs)
Ошибка, которую я получаю, которая появляется в строке, заключенной в двойные звездочки, выглядит следующим образом
Exception has occurred: TypeError
coercing to Unicode: need string or buffer, tuple found
File "C:UsersHPPycharmProjectsbetapp1model_1.py", line 28, in <module>
with open(file) as f:
File "C:UsersHPAnaconda2Librunpy.py", line 72, in _run_code
exec code in run_globals
File "C:UsersHPAnaconda2Librunpy.py", line 82, in _run_module_code
mod_name, mod_fname, mod_loader, pkg_name)
File "C:UsersHPAnaconda2Librunpy.py", line 252, in run_path
return _run_module_code(code, init_globals, run_name, path_name)
Мой набор данных состоит из 4 значений в строке: команда хозяев, команда гостей, голы, забитые командой хозяев и голы, забитые командой гостей. Пример приведен ниже;
Gor Mahia,Tusker,1,0
Mount Kenya United,Zoo,1,0
Sony Sugar,Western Stima,4,0
Я ожидаю, что результатом будет список со средним количеством голов, забитых командой, но я не получаю никаких результатов
Комментарии:
1. Можете ли вы опубликовать полную трассировку стека?
2. Вы заставляете нас догадываться, где ошибка. Пожалуйста, отредактируйте вопрос, чтобы включить полное сообщение об ошибке.
Ответ №1:
Похоже, ваша ошибка здесь:
for file in matches:
avgs=[]
for object in team:
goalsscored=0
with open(file) as f: # error is here
reader=csv.DictReader(f)
Ожидается, open
что функция будет file
строковым или файловым буфером, но это кортеж, который выглядит примерно так (row[0], row[1], row[2], row[3])
. Если вы укажете имена файлов, которые пытаетесь открыть, мы сможем помочь в дальнейшем.