Skip to content

Latest commit

 

History

History
20 lines (16 loc) · 957 Bytes

Question_2142.md

File metadata and controls

20 lines (16 loc) · 957 Bytes

LeetCode Records - Question 2142 The Number of Passengers in Each Bus I

Attempt 1: Use pd.merge(), loc[], groupby(), idxmin(), count(), fillna(), and sort_values()

import pandas as pd

def count_passengers_in_bus(buses: pd.DataFrame, passengers: pd.DataFrame) -> pd.DataFrame:
    merged_df = pd.merge(buses, passengers, how='cross')
    merged_df = merged_df[merged_df['arrival_time_y'] <= merged_df['arrival_time_x']]
    merged_df['diff'] = merged_df['arrival_time_x'] - merged_df['arrival_time_y']
    merged_df = merged_df.loc[merged_df.groupby('passenger_id')['diff'].idxmin()]

    passenger_counts = merged_df.groupby('bus_id')['passenger_id'].count().rename('passengers_cnt').reset_index()
    ans = pd.merge(buses, passenger_counts, on='bus_id', how='left').fillna(0)
    return ans.sort_values('bus_id')[['bus_id', 'passengers_cnt']]
  • Runtime: 475 ms (Beats: 87.88%)
  • Memory: 103.38 MB (Beats: 57.58%)