Skip to main content
Back to problems
#2084
Medium Database

Drop type 1 orders for customers with type 0 orders

Database
86.6% acceptance
Mar 31, 2026
97
20

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Orders
# 
# +-------------+------+
# | Column Name | Type |
# +-------------+------+
# | order_id    | int  |
# | customer_id | int  |
# | order_type  | int  |
# +-------------+------+
# order_id is the column with unique values for this table.
# Each row of this table indicates the ID of an order, the ID of the customer who ordered it, and the order type.
# The orders could be of type 0 or type 1.
# 
#  
# 
# Write a solution to report all the orders based on the following criteria:
# 
# If a customer has at least one order of type 0, do not report any order of type 1 from that customer.
# 
# Otherwise, report all the orders of the customer.
# 
# Return the result table in any order.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# Orders table:
# +----------+-------------+------------+
# | order_id | customer_id | order_type |
# +----------+-------------+------------+
# | 1        | 1           | 0          |
# | 2        | 1           | 0          |
# | 11       | 2           | 0          |
# | 12       | 2           | 1          |
# | 21       | 3           | 1          |
# | 22       | 3           | 0          |
# | 31       | 4           | 1          |
# | 32       | 4           | 1          |
# +----------+-------------+------------+
# Output:
# +----------+-------------+------------+
# | order_id | customer_id | order_type |
# +----------+-------------+------------+
# | 31       | 4           | 1          |
# | 32       | 4           | 1          |
# | 1        | 1           | 0          |
# | 2        | 1           | 0          |
# | 11       | 2           | 0          |
# | 22       | 3           | 0          |
# +----------+-------------+------------+
# Explanation:
# Customer 1 has two orders of type 0. We return both of them.
# Customer 2 has one order of type 0 and one order of type 1. We only return the order of type 0.
# Customer 3 has one order of type 0 and one order of type 1. We only return the order of type 0.
# Customer 4 has two orders of type 1. We return both of them.

import pandas as pd

def drop_specific_orders(orders: pd.DataFrame) -> pd.DataFrame:
  # Find customers who have at least one type 0 order
  customers_with_type0 = orders[orders['order_type'] == 0]['customer_id'].unique()
  # Keep all type 0 orders, and type 1 orders only for customers without type 0
  result = orders[~((orders['order_type'] == 1) & (orders['customer_id'].isin(customers_with_type0)))]
  return result