728x90
테이블 생성 코드
data = [[1, 1], [1, 2], [1, 3], [2, 1], [2, 4]]
project = pd.DataFrame(data, columns=['project_id', 'employee_id']).astype({'project_id':'Int64', 'employee_id':'Int64'})
data = [[1, 'Khaled', 3], [2, 'Ali', 2], [3, 'John', 1], [4, 'Doe', 2]]
employee = pd.DataFrame(data, columns=['employee_id', 'name', 'experience_years']).astype({'employee_id':'Int64', 'name':'object', 'experience_years':'Int64'})
문제

해결 코드
import pandas as pd
def project_employees_i(project: pd.DataFrame, employee: pd.DataFrame) -> pd.DataFrame:
merge_df = pd.merge(project,employee, how='left', on='employee_id')
result_df = merge_df.groupby('project_id')['experience_years'].mean().round(2).rename('average_years').reset_index()
return result_df
풀이
1. merge_df = pd.merge(project,employee, how='left', on='employee_id')
project 테이블과 employee 테이블을 left join 으로 employee_id 컬럼을 기준으로 합친다.
2. result_df = merge_df.groupby('project_id')['experience_years'].mean().round(2).rename('average_years').reset_index()
합친 테이블에서 project_id를 기준으로 그룹바이 한다.
project_id로 묶여진 merge_df 테이블에서 experience_years 컬럼의 평균 mean ()을 구하고 round(2)를 하고 rename("")을 하고 섞여져버린 인덱스를 리셋시키는 reset_index()를 하고
3. return result_df
리턴에다가 출력한다.
728x90
'• data analysis > PYTHON' 카테고리의 다른 글
1633. Percentage of Users Attended a Contest (0) | 2024.02.28 |
---|---|
1667. Fix Names in a Table (0) | 2024.02.27 |
610. Triangle Judgement (0) | 2024.02.24 |
1068. Product Sales Analysis I (0) | 2024.02.22 |
[leetcode] 1148. Article Views I (0) | 2024.02.20 |