Customers
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ 在 SQL 中,id 是该表的主键。 该表的每一行都表示客户的 ID 和名称。
Orders
表:
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | customerId | int | +-------------+------+ 在 SQL 中,id 是该表的主键。 customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。 该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。
找出所有从不点任何东西的顾客。
以 任意顺序 返回结果表。
解题思路1:
1.两张表进行关联,得到用户的信息及购买情况
注:如果需要多个关联条件可['id1', 'id2']
df = customers.merge(orders, left_on = 'id', right_on = 'customerId', how='left')
2.将未匹配到购买信息的用户及customerId 为null的name
df = df[df['customerId'].isna()]
3.将字段name改为Customers
df = df[['name']].rename(columns={'name':'Customers'})
解题思路2:
df_merge = pd.merge(df1, df2, left_on = 'id', right_on = 'customerId', how = 'left')
df = df_merge.loc[pd.isnull(df_merge['customerId']), 'name']
注:将series结构,改为dataframe结构
df = df.to_frame()
df.columns = ['Customers']