파이썬(Python)&판다스(Pandas)&Polars
[Pandas] 서로 다른 데이터프레임에서 특정 값을 매핑해 새로운 컬럼 만들기
송채채
2023. 1. 10. 15:28
기관코드와 전체기관명으로 구성된
df1
소관기관 컬럼에 전체기관명만 있는
df2
두 개의 데이터 프레임을 합쳐서 하나로 병합하고 싶다면, pd.merge
함수를 쓰면 된다.
하지만, merge 함수 만으로는 경찰관, 교육부
가 입력된 셀은 매핑될 수 없다.
이 문제를 해결하기 위해 아래와 같은 코드를 작성하였다.
# 기관코드 merge
new_df = pd.merge(df2, df1, how="left", left_on="소관기관", right_on="전체기관명")
new_df.replace({np.nan: None}, inplace=True)
# 소관기관이 여러개 인 경우가 있음
for idx, row in new_df.iterrows():
if row['소관기관'] != None and row['기관코드'] == None:
org_list = row["소관기관"].split(",")
tmp_code = []
for orgName in org_list:
orgCode = df1[df1['전체기관명'] == orgName]['기관코드'].values[0]
tmp_code.append(orgCode)
tmp_code = str(tmp_code).replace('[', '').replace(']', '').replace("'", "").replace(" ","").strip()
new_df.iloc[idx, new_df.columns.get_loc('기관코드')] = tmp_code
해당 코드의 결과는 아래 데이터 프레임과 같다.
- df1, df2를 merge하고 특정 값을 찾아 매핑한 값을 넣은
new_df
반응형