Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- port
- mssql
- 유니티
- 다이어트
- PyQt5
- ubuntu
- PER
- sqlite
- pandas
- MS-SQL
- 라즈베리파이
- flutter
- swift
- IOS
- MySQL
- 리눅스
- GIT
- PyQt
- Unity
- node.js
- 맛집
- tensorflow
- Linux
- ASP
- urllib
- 날짜
- 함수
- Excel
- javascript
- python
Archives
아미(아름다운미소)
merge 본문
# 원본 merge 코드
df_merge = df2.merge(df3, how='left', left_on='a', right_on='b').set_index('d')
# join으로 변환한 코드
df_join = (
df2.set_index('a') # left_on='a' → 인덱스
.join(df3.set_index('b'), # right_on='b' → 인덱스
how='left')
.reset_index() # 인덱스(a)를 컬럼으로 복원
.set_index('d') # 최종 인덱스 설정
)
# 결과 비교
print(df_merge.equals(df_join)) # True여야 일치
# 원본 merge 결과와 100% 동일하게 만드는 방법
if df3.empty:
# 1. df2 복사
df_optimized = df2.copy()
# 2. df3의 모든 컬럼 처리 (b는 제외)
for col in df3.columns:
if col == 'b':
continue
# 컬럼이 df2에 이미 존재하는 경우 _x, _y 추가
if col in df_optimized.columns:
df_optimized[f"{col}_y"] = None # merge 시 df3 컬럼은 _y 접미사
else:
df_optimized[col] = None
# 3. 인덱스 설정
df_optimized = df_optimized.set_index('d')
else:
# 일반적인 병합 수행
df_optimized = df2.merge(df3, how='left', left_on='a', right_on='b').set_index('d')
'랭귀지 > pandas' 카테고리의 다른 글
category로 변환 (0) | 2025.03.27 |
---|---|
함수 실행 시간 측정 (0) | 2025.03.26 |
fillna 최종 (0) | 2025.03.25 |
pd.concat 을 사용할 때 컬럼이 서로 맞지 않는 경우, list_columns 에 지정된 컬럼명으로 맞춘 후 병합 (0) | 2025.03.25 |
@ 기준으로 앞의 값을 가져오고 @가 없으면 기존 값을 유지 (0) | 2025.03.20 |
Comments