From 0445c62d3ae5150b0ef879dca097e55d006d9dd4 Mon Sep 17 00:00:00 2001 From: Nidhi Chauhan <61177315+ni-13@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:41:26 -0500 Subject: [PATCH] Completed_S30_Pandas4 --- S30_Pandas_04.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 S30_Pandas_04.py diff --git a/S30_Pandas_04.py b/S30_Pandas_04.py new file mode 100644 index 0000000..da88495 --- /dev/null +++ b/S30_Pandas_04.py @@ -0,0 +1,60 @@ +# Pandas_04 + +# 177. Nth Highest Salary_Solution_Q1 + +import pandas as pd + +def nth_highest_salary(employee: pd.DataFrame, N: int) -> pd.DataFrame: + + dist = employee.drop_duplicates(subset='salary') + dist['rnk'] = dist['salary'].rank(method='dense', ascending=False) + ans = dist[dist.rnk == N][['salary']] + if not len(ans): + return pd.DataFrame({f'getNthHighestSalary({N})': [None]}) + ans = ans.rename(columns={'salary':f'getNthHighestSalary({N})'}) + return ans + +#Alternative1 + +import pandas as pd + +def nth_highest_salary(employee: pd.DataFrame, N: int) -> pd.DataFrame: + result_set = set() + for i in range(len(employee)): + salary = employee['salary'][i] + result_set.add(salary) + result= [] + for element in result_set: + result.append(element) + result.sort(reverse =True) + + if N > len(result) or N <= 0: + return pd.DataFrame({f'getNthHighestSalary({N})' : [None]}) + + return pd.DataFrame({f'getNthHighestSalary({N})' : [result[N-1]]}) + +#Alternative2 + +import pandas as pd + +def nth_highest_salary(employee: pd.DataFrame, N: int) -> pd.DataFrame: + df= employee[['salary']].drop_duplicates() + if N > len(df) or N <= 0: + return pd.DataFrame({f'getNthHighestSalary({N})' : [None]}) + + return df.sort_values('salary', ascending = False).head(N).tail(1)[['salary']].rename(columns ={'salary':f'getNthHighestSalary({N})'}) + +______________________________________________________________________________________________________________________________________ + +# 176. Second Highest Salary_Solution_Q2 + +import pandas as pd + +def second_highest_salary(employee: pd.DataFrame) -> pd.DataFrame: + employee = employee.drop_duplicates(["salary"]) + if len(employee["salary"].unique()) < 2: + return pd.DataFrame({"SecondHighestSalary": [np.NaN]}) + employee = employee.sort_values("salary", ascending=False) + employee.drop("id", axis=1, inplace=True) + employee.rename({"salary": "SecondHighestSalary"}, axis=1, inplace=True) + return employee.head(2).tail(1) \ No newline at end of file