Ich bin gerade dabei, einen Datenanalysekurs über Udacity zu machen. Ich habe ein bisschen harte Zeit. Ich habe im Moment versucht, einige Datentypen in einigen Wörterbüchern zu konvertieren, und ich bekomme immer den Fehler "TypeError: Liste Indizes müssen ganze Zahlen, nicht str sein" Jetzt heißt es, es ist eine Liste, aber aus meinem Verständnis sind alle meine Daten in a Wörterbuch. Hier ist der Code."TypeError: List-Indizes müssen Integer sein, nicht str" in 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]
Hier ist ein Beispiel des Inhalts der Datei, es die ersten beiden Reihen sind:
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
Die letzte Zeile von 'openCSV' konvertiert Ihre Daten in eine Liste, nicht wahr? Versuchen Sie, nur 'Leser' zurück zu geben. –
Ich dachte, die Zeile' reader = unicodecsv.DictReader (f) 'konvertiert die Daten in ein Wörterbuch. Hauptsächlich weil Sie nicht auf ein Element in einer Liste mit einer Zeichenfolge zugreifen können. @SimonFraser –
In Ihrer for-Schleife erhalten Sie die Registrierung durch Iteration von Registrierungen, aber Sie versuchen, auf Enrolements-Schlüssel statt Enrollment-Schlüssel zuzugreifen –