The question
A product team needs the three largest available order lines from the East region.
df Ranked shortlistYour inputs
df
One row is an order line. in_stock determines availability; quantity counts units, not distinct products.
Field meanings and units
order_id- Order or order-line identifier, as defined by this brief.
product- Recorded product label.
category- Product category.
region- Sales region.
quantity- Number of units.
unit_price- Dollars per unit.
discount- Discount in dollars for the whole order line.
in_stock- Whether the order line is marked available.
order_id | product | category | region | quantity | unit_price | discount | in_stock |
|---|---|---|---|---|---|---|---|
| P001 | " Notebook " | Paper | East | 2 | 3.5 | 0 | false |
| P002 | PEN | Writing | West | 5 | 1.2 | None | true |
| P003 | " pencil" | Writing | East | 3 | 0.8 | 0.5 | true |
| P004 | Note-book | Paper | West | 4 | 3.5 | 1 | true |
| P005 | " Notebook " | Paper | East | 1 | 3.5 | 0 | true |
View all 18 rows
order_id | product | category | region | quantity | unit_price | discount | in_stock |
|---|---|---|---|---|---|---|---|
| P001 | " Notebook " | Paper | East | 2 | 3.5 | 0 | false |
| P002 | PEN | Writing | West | 5 | 1.2 | None | true |
| P003 | " pencil" | Writing | East | 3 | 0.8 | 0.5 | true |
| P004 | Note-book | Paper | West | 4 | 3.5 | 1 | true |
| P005 | " Notebook " | Paper | East | 1 | 3.5 | 0 | true |
| P006 | PEN | Writing | West | 6 | 1.2 | None | false |
| P007 | " pencil" | Writing | East | 2 | 0.8 | 0.5 | true |
| P008 | Note-book | Paper | West | 8 | 3.5 | 1 | true |
| P009 | " Notebook " | Paper | East | 2 | 3.5 | 0 | true |
| P010 | PEN | Writing | West | 5 | 1.2 | None | true |
| P011 | " pencil" | Writing | East | 3 | 0.8 | 0.5 | false |
| P012 | Note-book | Paper | West | 4 | 3.5 | 1 | true |
| P013 | " Notebook " | Paper | East | 1 | 3.5 | 0 | true |
| P014 | PEN | Writing | West | 6 | 1.2 | None | true |
| P015 | " pencil" | Writing | East | 2 | 0.8 | 0.5 | true |
| P016 | Note-book | Paper | West | 8 | 3.5 | 1 | false |
| P017 | " Notebook " | Paper | East | 2 | 3.5 | 0 | true |
| P018 | PEN | Writing | West | 5 | 1.2 | None | true |
The editable setup in Your Python creates these inputs when you run it.
A product team needs the three largest available order lines from the East region.
shortlistDataFrameunitsnumberDeliverables
Make the outputs listed below. Use each name exactly as shown. Then choose Check answer.
Python name key
Teal outlines name table columns. Violet left rules name Python objects. Dotted rules mark syntax, functions and parameters. Use each name exactly as shown.
- Qualifying shortlistOutput
shortlistDataFrame- Create
shortlistfromin_stockrecords inregionEast. - Take the top three by
quantitydescending, breaking ties byorder_idascending. - Keep
order_id,productandquantity.
- Create
- Units representedOutput
unitsnumber- Store the total
quantityin theshortlistasunits.
- Store the total
Data policy Keep all supplied source tables unchanged. Work on separate outputs.
Help Hints & explained solution
Choose the amount of help you need. Opening one hint does not reveal the others.
Hint 1 — Think
Should ranking happen before or after eligibility is decided?
Hint 2 — Tools
Boolean selection, sort_values(), head() and sum()
Revisit: Combine conditions · Sort the table · Take the first look · Answer one numerical question
Hint 3 — Approach
Restrict to eligible records, rank with the stated tie-break, retain three, and total only their quantities.
Explained solution
Add these lines below # Your work in the editor. The supplied input setup is already there.
shortlist = (
df.loc[df.in_stock & (df.region == 'East'), ['order_id', 'product', 'quantity']]
.sort_values(['quantity', 'order_id'], ascending=[False, True])
.head(3)
)
units = shortlist.quantity.sum()
shortlistView supplied setup
This code is already at the top of the editor.
import pandas as pd
# Supplied input: df (18 rows)
df = pd.DataFrame(
[
('P001', ' Notebook ', 'Paper', 'East', 2, 3.5, 0, False),
('P002', 'PEN', 'Writing', 'West', 5, 1.2, None, True),
('P003', ' pencil', 'Writing', 'East', 3, 0.8, 0.5, True),
('P004', 'Note-book', 'Paper', 'West', 4, 3.5, 1, True),
('P005', ' Notebook ', 'Paper', 'East', 1, 3.5, 0, True),
('P006', 'PEN', 'Writing', 'West', 6, 1.2, None, False),
('P007', ' pencil', 'Writing', 'East', 2, 0.8, 0.5, True),
('P008', 'Note-book', 'Paper', 'West', 8, 3.5, 1, True),
('P009', ' Notebook ', 'Paper', 'East', 2, 3.5, 0, True),
('P010', 'PEN', 'Writing', 'West', 5, 1.2, None, True),
('P011', ' pencil', 'Writing', 'East', 3, 0.8, 0.5, False),
('P012', 'Note-book', 'Paper', 'West', 4, 3.5, 1, True),
('P013', ' Notebook ', 'Paper', 'East', 1, 3.5, 0, True),
('P014', 'PEN', 'Writing', 'West', 6, 1.2, None, True),
('P015', ' pencil', 'Writing', 'East', 2, 0.8, 0.5, True),
('P016', 'Note-book', 'Paper', 'West', 8, 3.5, 1, False),
('P017', ' Notebook ', 'Paper', 'East', 2, 3.5, 0, True),
('P018', 'PEN', 'Writing', 'West', 5, 1.2, None, True),
],
columns=['order_id', 'product', 'category', 'region', 'quantity', 'unit_price', 'discount', 'in_stock'],
)Why these steps exist
- Eligibility comes before ranking: unavailable products must not occupy a shortlist place.
- The total uses just the three selected lines, and the ID tie-break makes the handoff deterministic.
Another valid approach
You may sort in stages or with multiple keys, provided ties are resolved before selecting three records.