Error 'DictReader' object is not subscriptable

Viewed 21

could you help with this case? The original data is:

City: NYC {'bikeid': '17109', 'birth year': '', 'end station id': '401', 'end station latitude': '40.72019576', 'end station longitude': '-73.98997825', 'end station name': 'Allen St & Rivington St', 'gender': '0', 'start station id': '532', 'start station latitude': '40.710451', 'start station longitude': '-73.960876', 'start station name': 'S 5 Pl & S 4 St', 'starttime': '1/1/2016 00:09:55', 'stoptime': '1/1/2016 00:23:54', 'tripduration': '839', 'usertype': 'Customer'}

City: Chicago
{'bikeid': '2295',
 'birthyear': '1990',
 'from_station_id': '156',
 'from_station_name': 'Clark St & Wellington Ave',
 'gender': 'Male',
 'starttime': '3/31/2016 23:30',
 'stoptime': '3/31/2016 23:46',
 'to_station_id': '166',
 'to_station_name': 'Ashland Ave & Wrightwood Ave',
 'trip_id': '9080545',
 'tripduration': '926',
 'usertype': 'Subscriber'}

City: Washington
{'Bike number': 'W20842',
 'Duration (ms)': '427387',
 'End date': '3/31/2016 23:04',
 'End station': 'Georgia Ave and Fairmont St NW',
 'End station number': '31207',
 'Member Type': 'Registered',
 'Start date': '3/31/2016 22:57',
 'Start station': 'Park Rd & Holmead Pl NW',
 'Start station number': '31602'}

I want to extract the " city" and "trip duration" and convert the trip duration to minutes, then my code is:

def city_duration(filename):
    city = filename.split('-')[0].split('/')[-1]
    print('\nCity: {}'.format(city))

    with open(filename,'r') as f_in:
        trip_reader=csv.DictReader(f_in)
        if city=="Washington":
            duration_in_mins=int((trip_reader)['Duration (ms)'])/(60*60)  
        else:
            duration_in_mins=int((trip_reader)['tripduration'])/(60)
            
        city_duration=pprint(duration_in_mins)
    return (city,duration_in_mins)

    
data_files = ['/Users/silviawu/Downloads//NYC-CitiBike-2016.csv',
              '/Users/silviawu/Downloads//Chicago-Divvy-2016.csv',
              '/Users/silviawu/Downloads/Washington-CapitalBikeshare-2016.csv',]

duration_trips={}
for data_file in data_files:
    city,duration=city_duration(data_file)
    duration_trips[city]=duration

I got the errors as below. Could you help? Thank you in advance!

City: NYC
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/3q/r809c67d4wx4qfpck_qjyz2c0000gn/T/ipykernel_40037/1621703074.py in <module>
     20 duration_trips={}
     21 for data_file in data_files:
---> 22     city,duration=city_duration(data_file)
     23     duration_trips[city]=duration

/var/folders/3q/r809c67d4wx4qfpck_qjyz2c0000gn/T/ipykernel_40037/1621703074.py in city_duration(filename)
      8             duration_in_mins=int((trip_reader)['Duration (ms)'])/(60*60)
      9         else:
---> 10             duration_in_mins=int((trip_reader)['tripduration'])/(60)
     11 
     12         city_duration=pprint(duration_in_mins)

TypeError: 'DictReader' object is not subscriptable
0 Answers
Related