我目前正在Udacity上進行數據分析課程。我有點困難。我有我正在嘗試轉換一些字典中的一些數據類型,我不斷收到錯誤「TypeError:列表索引必須是整數,而不是str」現在,它說這是一個列表,但從我的理解,我所有的數據是在一個字典。這是代碼。Python 2.7中的「TypeError:列表索引必須是整數,而不是str」
# 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循環中,您通過迭代登記來獲得註冊,但您嘗試訪問Enrolements鍵而不是註冊鍵 –