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
- ASP
- 함수
- 리눅스
- Unity
- PER
- 날짜
- pandas
- 라즈베리파이
- flutter
- javascript
- port
- python
- GIT
- PyQt
- tensorflow
- sqlite
- 맛집
- ubuntu
- MySQL
- MS-SQL
- 유니티
- PyQt5
- node.js
- 다이어트
- urllib
- swift
- Excel
- Linux
- IOS
- mssql
Archives
아미(아름다운미소)
pandas 참조 df 특정 컬럼값으로 값채우기 본문
일치값 없으면 원본값유지
import pandas as pd
# df1 생성
df1 = pd.DataFrame({
'a': [1, 2, 3, 1, 2, 3, 4],
'b': [10, 20, 30, 40, 50, 60, 70],
'c': [100, 200, 300, 400, 500, 600, 700],
'd': [1000, 2000, 3000, 4000, 5000, 6000, 7000]
})
# 수정된 df2 생성 (a-1을 5, 6, 7로 변경)
df2 = pd.DataFrame({
'a-1': [5, 6, 7],
'b-1': [15, 25, 35] # 각 a-1에 해당하는 b-1 값
})
# Left Outer Join 수행 (a와 a-1을 키로 사용)
left_outer_join_df = pd.merge(df1, df2, left_on='a', right_on='a-1', how='left')
# b 컬럼 업데이트 (b-1을 사용하여 업데이트, NaN인 경우 원래 b 유지)
left_outer_join_df['b'] = left_outer_join_df['b-1'].fillna(left_outer_join_df['b'])
# 불필요한 b-1 및 a-1 컬럼 제거
left_outer_join_df = left_outer_join_df.drop(columns=['b-1', 'a-1'])
# 결과 출력
print(left_outer_join_df)
예제1
import pandas as pd
# df1 생성
df1 = pd.DataFrame({
'a': [1, 2, 3, 1, 2, 3, 4],
'b': [10, 20, 30, 40, 50, 60, 70],
'c': [100, 200, 300, 400, 500, 600, 700],
'd': [1000, 2000, 3000, 4000, 5000, 6000, 7000]
})
# 수정된 df2 생성 (a 값이 1, 2, 3)
df2 = pd.DataFrame({
'a': [1, 2, 3],
'b': [15, 25, 35] # 각 a에 해당하는 b 값
})
# Left Outer Join 수행
left_outer_join_df = pd.merge(df1, df2, on='a', how='left', suffixes=('', '_new'))
# b 컬럼 업데이트
left_outer_join_df['b'] = left_outer_join_df['b_new'].combine_first(left_outer_join_df['b'])
# 불필요한 b_new 컬럼 제거
left_outer_join_df = left_outer_join_df.drop(columns=['b_new'])
# 결과 출력
print(left_outer_join_df)
결과
a b c d
0 1 15 100 1000
1 2 25 200 2000
2 3 35 300 3000
3 1 15 400 4000
4 2 25 500 5000
5 3 35 600 6000
6 4 70 700 7000
예제2
import pandas as pd
# df1 생성
df1 = pd.DataFrame({
'a': [1, 2, 3, 1, 2, 3, 4],
'b': [10, 20, 30, 40, 50, 60, 70],
'c': [100, 200, 300, 400, 500, 600, 700],
'd': [1000, 2000, 3000, 4000, 5000, 6000, 7000]
})
# 수정된 df2 생성 (a-1을 키로 사용)
df2 = pd.DataFrame({
'a-1': [1, 2, 3],
'b': [15, 25, 35] # 각 a에 해당하는 b 값
})
# Left Outer Join 수행 (a와 a-1을 키로 사용)
left_outer_join_df = pd.merge(df1, df2, left_on='a', right_on='a-1', how='left', suffixes=('', '_new'))
# b 컬럼 업데이트
left_outer_join_df['b'] = left_outer_join_df['b_new'].combine_first(left_outer_join_df['b'])
# 불필요한 b_new 및 a-1 컬럼 제거
left_outer_join_df = left_outer_join_df.drop(columns=['b_new', 'a-1'])
# 결과 출력
print(left_outer_join_df)
결과
a b c d
0 1 15 100 1000
1 2 25 200 2000
2 3 35 300 3000
3 1 15 400 4000
4 2 25 500 5000
5 3 35 600 6000
6 4 70 700 7000
예제3
import pandas as pd
# df1 생성
df1 = pd.DataFrame({
'a': [1, 2, 3, 1, 2, 3, 4],
'b': [10, 20, 30, 40, 50, 60, 70],
'c': [100, 200, 300, 400, 500, 600, 700],
'd': [1000, 2000, 3000, 4000, 5000, 6000, 7000]
})
# 수정된 df2 생성 (b를 b-1로 변경)
df2 = pd.DataFrame({
'a-1': [1, 2, 3],
'b-1': [15, 25, 35] # 각 a에 해당하는 b-1 값
})
# Left Outer Join 수행 (a와 a-1을 키로 사용)
left_outer_join_df = pd.merge(df1, df2, left_on='a', right_on='a-1', how='left', suffixes=('', '_new'))
# b 컬럼 업데이트 (b-1을 사용하여 업데이트)
left_outer_join_df['b'] = left_outer_join_df['b-1'].combine_first(left_outer_join_df['b'])
# 불필요한 b-1 및 a-1 컬럼 제거
left_outer_join_df = left_outer_join_df.drop(columns=['b-1', 'a-1'])
# 결과 출력
print(left_outer_join_df)
결과
a b c d
0 1 15 100 1000
1 2 25 200 2000
2 3 35 300 3000
3 1 15 400 4000
4 2 25 500 5000
5 3 35 600 6000
6 4 70 700 7000
'랭귀지 > pandas' 카테고리의 다른 글
pandas 컬럼이름을 마지막으로이동 (0) | 2024.07.22 |
---|---|
pandas 컬럼값변경 (0) | 2024.07.20 |
pandas dataframe 컬럼비교 (0) | 2024.07.18 |
pandas filter (0) | 2024.07.17 |
pandas 여러열적용 (0) | 2024.07.16 |
Comments