All problems

Ride Outcome Rate by Rider City

hardPythonMergeGroupBy

Ops suspects that how rides end differs by city, and wants a rate (not just a count) to compare fairly across cities of different sizes. Cancellations are what started the argument, but the same report gets pointed at whichever outcome is under discussion that week, so the outcome is named when the report is run.

Riders

id name city signup_date
1 Maya Chen Austin 2023-01-05
2 Noah Patel Denver 2023-02-14
3 Zara Ahmed Austin 2023-03-01
4 Leo Kim Seattle 2023-04-20
5 Ivy Brooks Denver 2023-05-11

Rides

id rider_id driver_id distance_km fare ride_date status
1 1 1 5.2 12.5 2023-06-01 completed
2 1 2 3 8 2023-06-03 completed
3 2 2 10 22 2023-06-02 completed
4 3 1 2.1 6.5 2023-06-05 cancelled
5 3 4 4.4 11 2023-06-06 completed
6 4 3 7.8 18 2023-06-04 completed
7 5 2 1.5 5 2023-06-07 cancelled
8 2 2 12.3 26.5 2023-06-10 completed
9 1 1 6.6 15 2023-06-12 completed
10 4 3 3.3 9 2023-06-15 completed
11 5 2 8.8 19.5 2023-06-18 completed
12 3 1 2.9 7.5 2023-06-20 cancelled

Input

The DataFrames above are already built for you. One line of input arrives: the ride outcome under discussion, spelled exactly as it appears in the status column.

Task: A city's rate is rides that ended with that outcome / all rides taken by riders who live there, rounded to 2 decimals. Print a dict mapping rider city → that rate. Every city with riders gets an entry, and the denominator is always all of that city's rides — so a city where the outcome never happened scores 0.0 rather than dropping out of the dict.

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…