| 1 | ○ | Import pandas | Easy |
| 2 | ○ | pandas Version | Easy |
| 3 | ○ | Create a DataFrame | Easy |
| 4 | ○ | Summary of a DataFrame | Easy |
| 5 | ○ | First 3 Rows | Easy |
| 6 | ○ | Select Two Columns | Easy |
| 7 | ○ | Select Rows and Columns | Easy |
| 8 | ○ | Rows with Visits > 3 | Easy |
| 9 | ○ | Rows with Missing Age | Easy |
| 10 | ○ | Cats Younger Than 3 | Easy |
| 11 | ○ | Age Between 2 and 4 | Easy |
| 12 | ○ | Change a Single Value | Easy |
| 13 | ○ | Total Visits | Easy |
| 14 | ○ | Mean Age per Animal | Easy |
| 15 | ○ | Append then Delete a Row | Easy |
| 16 | ○ | Count Each Animal | Easy |
| 17 | ○ | Sort by Two Columns | Easy |
| 18 | ○ | Map yes/no to Boolean | Easy |
| 19 | ○ | Replace a Value | Easy |
| 20 | ○ | Pivot Table of Mean Age | Medium |
| 21 | ○ | Drop Consecutive Duplicates | Medium |
| 22 | ○ | Subtract the Row Mean | Medium |
| 23 | ○ | Column with Smallest Sum | Medium |
| 24 | ○ | Count Fully-Unique Rows | Medium |
| 25 | ○ | Column of the Third NaN | Hard |
| 26 | ○ | Sum of Three Greatest per Group | Hard |
| 27 | ○ | Sum over Integer Bins | Hard |
| 28 | ○ | Distance to Previous Zero | Hard |
| 29 | ○ | Locations of 3 Largest Values | Hard |
| 30 | ○ | Patch Negatives with Group Mean | Hard |
| 31 | ○ | Grouped Rolling Mean (ignore NaN) | Hard |
| 32 | ○ | Business-Day Series of 2015 | Easy |
| 33 | ○ | Sum on Wednesdays | Medium |
| 34 | ○ | Mean per Calendar Month | Medium |
| 35 | ○ | Peak Date per 4 Months | Hard |
| 36 | ○ | Third Thursdays | Medium |
| 37 | ○ | Fill Missing Flight Numbers | Medium |
| 38 | ○ | Split From_To Column | Medium |
| 39 | ○ | Standardise City Capitalisation | Medium |
| 40 | ○ | Replace Column with Split Columns | Medium |
| 41 | ○ | Extract Airline Name | Medium |
| 42 | ○ | Expand List Column | Medium |
| 43 | ○ | Build a MultiIndex Series | Medium |
| 44 | ○ | Is the Index Sorted? | Medium |
| 45 | ○ | Select from Second Level | Medium |
| 46 | ○ | Slice a MultiIndex | Medium |
| 47 | ○ | Sum per First Level | Medium |
| 48 | ○ | Sum per Second Level via unstack | Medium |
| 49 | ○ | Swap and Sort Index Levels | Medium |
| 50 | ○ | Minesweeper: Grid Coordinates | Medium |
| 51 | ○ | Minesweeper: Place Mines | Medium |
| 52 | ○ | Minesweeper: Adjacent Counts | Hard |
| 53 | ○ | Minesweeper: NaN on Mines | Medium |
| 54 | ○ | Minesweeper: Reshape to Grid | Hard |
| 55 | ○ | Hourly OHLC Aggregation | Medium |
| 56 | ○ | Filter Rows by Membership | Easy |
| 57 | ○ | Reindex Rows and Columns | Medium |
| 58 | ○ | Flag Duplicate Rows by Subset | Medium |
| 59 | ○ | Cross-Section from a MultiIndex | Medium |
| 60 | ○ | Tuple-Index a MultiIndex with .loc | Medium |
| 61 | ○ | Extract One Group | Easy |
| 62 | ○ | Named Aggregations per Group | Medium |
| 63 | ○ | Filter Groups by an Aggregate Condition | Medium |
| 64 | ○ | Within-Group Z-Score | Hard |
| 65 | ○ | Roll to the Nearest Business Day | Medium |
| 66 | ○ | Mean Value in Leap-Year Februaries | Medium |
| 67 | ○ | Resample to a New Frequency with Forward Fill | Medium |
| 68 | ○ | Find the Longest String | Easy |
| 69 | ○ | Concatenate Two String Columns | Easy |
| 70 | ○ | Extract the Last Two Characters | Easy |
| 71 | ○ | Filter Rows Matching a Regex | Medium |
| 72 | ○ | One-Hot Encode a Multi-Value Column | Medium |
| 73 | ○ | Safe Lookup with a Default | Easy |
| 74 | ○ | Add a Prefix to Index Labels | Easy |
| 75 | ○ | Interquartile Range | Easy |
| 76 | ○ | Count Unique Values, Counting NaN | Easy |
| 77 | ○ | Add Two Series with a Fill Value | Medium |
| 78 | ○ | Cast Specific Columns | Easy |
| 79 | ○ | Rename Columns and Index Together | Easy |
| 80 | ○ | Drop Sparse Rows with a Threshold | Medium |
| 81 | ○ | Stack Two DataFrames | Easy |
| 82 | ○ | Concatenate with Hierarchical Keys | Medium |
| 83 | ○ | Concatenate Column-Wise with an Outer Join | Medium |
| 84 | ○ | Inner Merge on a Shared Key | Easy |
| 85 | ○ | Left Merge with Differently-Named Keys | Medium |