184. 部门工资最高的员工https://leetcode.cn/problems/department-highest-salary/merge函数联表
transform函数组合max函数使用,得到每个部门的最大salary,并返回相同长度的series
import pandas as pd
def department_highest_salary(employee: pd.DataFrame, department: pd.DataFrame) -> pd.DataFrame:
df = employee.merge(department,left_on='departmentId',right_on='id',how='left')
df_max = employee.groupby('departmentId')['salary'].transform('max')
result = df[df['salary']==df_max]
return result[['name_y','name_x','salary']].rename(columns={'name_y':'Department','name_x':'Employee','salary':'Salary'})
602. 好友申请 II :谁有最多的好友https://leetcode.cn/problems/friend-requests-ii-who-has-the-most-friends/merge()函数的使用
import pandas as pd
def most_friends(request_accepted: pd.DataFrame) -> pd.DataFrame:
df1 = request_accepted.groupby('requester_id').count()['accepter_id'].reset_index().rename(columns={'requester_id':'id','accepter_id':'num'})
df2 = request_accepted.groupby('accepter_id').count()['requester_id'].reset_index().rename(columns={'accepter_id':'id','requester_id':'num'})
df = df1.merge(df2,how='outer',on='id').fillna(0)
df['num'] = df['num_x']+df['num_y']
df.sort_values(by='num',ascending=False,inplace=True)
return df[['id','num']].head(1)