В настоящее время я беру курс анализа данных на Udacity. Мне немного тяжело. Я в настоящее время пытаюсь преобразовать некоторые типы данных в некоторые словари, и я продолжаю получать ошибку «TypeError: индексы списка должны быть целыми, а не str». Теперь, это говорит, что это список, но из моего понимания все мои данные находятся в Словарь. Вот код.«TypeError: индексы индексов должны быть целыми, а не str» в Python 2.7
# Lesson 1 - Data Analysis
# Get & Open Data
import unicodecsv
import datetime as dt
def openCSV(filename):
with open(filename, "rb") as f:
reader = unicodecsv.DictReader(f)
return list(reader)
def parse_date(date):
if date == '':
return None
else:
return dt.strptime(date, "%y-%m-%d")
def parse_int(i):
if i == '':
return None
else:
return int(i)
enrollments = openCSV("enrollments.csv")
for enrollment in enrollments:
enrollments['cancel_date'] = parse_date(enrollments['cancel_date'])
enrollments['days_to_cancel'] = parse_int(enrollments['days_to_cancel'])
enrollments['is_canceled'] = enrollments['is_canceled'] == 'True'
enrollments['is_udacity'] = enrollments['is_udacity'] == 'True'
enrollments['join_date'] = parse_date(enrollments['join_date'])
# daily_engagement = openCSV("daily_engagement.csv")
# project_submissions = openCSV("project_submissions.csv")
enrollments[0]
Вот пример содержимого файла, то первые две строк:
account_key,status,join_date,cancel_date,days_to_cancel,is_udacity,is_canceled
448,canceled,2014-11-10,2015-01-14,65,True,True
Последняя строка 'openCSV' преобразует ваши данные в список, не так ли? Попробуйте просто вернуть 'reader' –
Я думал, что строка' reader = unicodecsv.DictReader (f) 'преобразует данные в словарь. В основном потому, что вы не можете получить доступ к элементу в списке со строкой. @SimonFraser –
в вашем цикле for, вы получаете регистрацию, итерации по зачислению, но вы пытаетесь получить доступ к ключам для обработки, а не к ключам регистрации. –