ChatGPT로 두 스프레드시트 목록을 ID로 정확히 비교하기
값을 가져오기 전에 일치 기준부터 정하기
두 스프레드시트 목록을 ID로 비교하는 일은 간단해 보이지만, 중복 키 하나만 있어도 가능한 답이 둘로 늘어납니다. 레코드를 합치기 전에 ChatGPT가 키 규칙부터 확인하도록 요청하세요. 유용한 비교 결과는 원본의 모든 행을 보존하고, 불확실한 연결을 설명하며, 레코드가 없는 경우와 값이 비어 있는 경우를 구분합니다.
이 가이드는 가상의 주문 ID와 입력된 상태 문자열로 목록 대조를 설명합니다. 상태 문자열이 연결되었다고 실제 배송 상태를 조회한 것은 아닙니다. 키 일치는 확인된 규칙에 따른 연결을 뜻하며, 두 레코드가 실제로 같은 대상을 가리킨다는 독립적인 증거는 아닙니다.
여기서는 유효한 키가 각 목록에 한 번씩 나타나는 1:1 관계를 기대합니다. ID가 전체 자료에서 고유한지 확인하세요. 계정이나 조직에 따라 같은 ID가 반복된다면, 비교 전에 계정과 ID를 묶은 복합 키가 필요한지 확인해야 합니다.
입력을 읽기 쉽게 정리하고 키 원문 보존하기
명확한 열 이름을 쓰고 한 행에 레코드 하나를 담으세요. 사용이 승인된 비기밀 자료만 제공하고, 인증 정보와 고객의 비공개 식별자는 제외하세요. 절차를 시험할 때는 가상 자료를 사용하세요. 파일 업로드와 분석 기능은 사용 환경에 따라 달라질 수 있으므로, 표를 대화에 붙여 넣는 방식으로 시작할 수도 있습니다.
수정하지 않은 원본을 보관하세요. ID는 숫자가 아닌 식별용 텍스트로 다룹니다. 앞자리 0이 의미가 있다면 "0012"와 "12"는 서로 다른 키입니다. 명시적인 규칙 없이 공백을 제거하거나, 자릿수를 채우거나, 대소문자를 바꾸거나, 숫자로 변환하지 마세요. Excel이 이미 앞자리 0을 없앴다면 개수를 추측해 복원하지 말고 손대지 않은 원본으로 돌아가세요.
원본에 행 식별자가 없다면 L1, R1처럼 유지되는 라벨을 붙이세요. 파일 이름과 별개로 각 원본 행을 식별할 수 있어야 합니다. 이후 비교용 키를 만들도록 승인하더라도 원래 키를 함께 남겨 모든 판단을 추적할 수 있게 하세요.
E1 = 'Left list (four rows): L1 order_id="0012"; L2 order_id="0013"; L3 order_id="0014"; L4 order_id="".'
E2 = 'Right list (five rows): R1 order_id="0012", status="shipped"; R2 order_id="12", status="delivered"; R3 order_id="0013", status="queued"; R4 order_id="0013", status="shipped"; R5 order_id="", status="pending".'
E3 = 'User-confirmed rule: order_id is an exact, case-sensitive text key; leading zeros are meaningful. Blank keys are invalid and must never match each other. One left row and one right row per valid key are expected. Do not trim, pad, change case or convert keys to numbers.'
중복 후보를 임의로 고르지 않고 왼쪽 네 행 검토하기
확인된 규칙에 따라 왼쪽 검토표는 원래의 네 행과 순서를 유지합니다. 유효하고 고유한 한 쌍에만 입력된 상태 값을 연결합니다. 중복 키는 검토 대상으로 분리하고, 영향을 받지 않는 고유 키 그룹은 계속 처리할 수 있습니다. 그렇다고 전체 입력이 1:1 검증을 통과한 것은 아닙니다.
오른쪽에만 있는 행: R2, order_id="12", status="delivered".
유효하지 않은 오른쪽 행: R5, order_id="", status="pending".
모호한 후보: R3와 R4는 중복 예외에 속하며, 둘 다 right_only가 아닙니다.
작은 화면에서는 표를 좌우로 밀어 모든 열을 확인하세요.
| 왼쪽 행 | 원본 order_id | 오른쪽 행 | 판정 | 입력된 상태 |
|---|---|---|---|---|
| L1 | "0012" | R1 | 확인된 규칙에 따른 일치 | shipped |
| L2 | "0013" | R3, R4 | 모호함: 중복 행의 값이 충돌 | 상태를 선택하지 않음 |
| L3 | "0014" | 없음 | left_only | 제공된 오른쪽 레코드 없음 |
| L4 | "" | 없음 | invalid_left | 일치 처리 금지 |
없는 레코드, 유효하지 않은 키, 값 충돌을 구분하기
L2에는 중복된 키 하나에 해당하는 오른쪽 행이 두 개 있습니다. 입력된 상태가 서로 다릅니다. 시간 순서가 제공되지 않았으므로 첫 번째, 마지막, 최신 행 중 어느 것도 정당한 선택 기준이 아닙니다. 두 후보 행과 값을 모두 표시하세요. 완전히 같은 중복 행도 명시적인 중복 제거 규칙 없이는 삭제하지 않습니다.
L3는 "0014"에 해당하는 오른쪽 레코드가 제공되지 않았다는 뜻입니다. 배송되지 않았다는 증거도, 값이 0이라는 뜻도 아닙니다. 상태가 비어 있는 경우도 누락된 값일 뿐, 거짓으로 추론할 수 없습니다. 비교하는 필드의 값이 다르면 양쪽 원본 값을 모두 보여 주고 차이를 표시하세요.
L4와 R5는 키가 비어 있으므로 서로 연결하면 안 됩니다. null 키에도 같은 무효 규칙을 적용하세요. 유효하지 않은 행은 숨기지 말고 예외로 분리합니다. 별도로 요청하지 않았다면 유사 일치를 사용하지 마세요. 유사 일치 제안은 후보 검토에만 두고 확정된 일치로 자동 처리하지 않습니다.
두 단계로 요청하고 행 수가 보존되는지 확인하기
재사용 프롬프트는 먼저 입력을 점검한 뒤 사용자의 확인을 기다리도록 합니다. 이때 키의 자료형, ID가 고유한 범위, 중복 그룹, 누락된 키, 예상 관계를 검토하세요. 규칙을 확인한 다음 대화에서 최종 대조 결과를 만들도록 요청합니다.
원본 행 라벨과 합계를 대조하세요. 왼쪽 네 행은 안전한 일치 1행, 중복 검토 1행, 왼쪽에만 있는 1행, 유효하지 않은 1행으로 모두 설명됩니다. 오른쪽 다섯 행은 안전한 일치 1행, 모호한 후보 2행, 오른쪽에만 있는 1행, 유효하지 않은 1행입니다. 중복 키 하나와 그 키를 가진 행 두 개는 다른 수치입니다.
분석 코드를 생성한다면 키 고유성 검사와 일치 출처 표시를 요청하세요. pandas merge는 validate="one_to_one"과 indicator를 지원하지만 null 키끼리 연결될 수 있으므로, 유효하지 않은 키를 먼저 제외해야 합니다. 이 예시 전체를 1:1 검증으로 병합하면 "0013" 때문에 실패합니다. 충돌을 분리한 뒤 처리 가능한 그룹만 검사하고, 코드가 실제로 실행되었는지도 확인하세요.
결과를 원본까지 추적할 수 있게 유지하기
왼쪽 검토표, 오른쪽에만 있는 레코드, 유효하지 않은 행, 중복 후보, 행 수 보존 집계를 함께 요청하세요. 각 결과를 원래 키와 원본 행 라벨에 대조하세요. 누락된 행을 숨긴 합계나, 충돌하는 후보 중 임의로 선택한 상태 값을 받아들이지 마세요.
비교 결과를 원본 입력과 분리하고 원본을 덮어쓰지 마세요. 대화 속 표만으로도 충분하며, 새 파일 생성은 선택 사항입니다. 스프레드시트 셀 안의 지시문은 데이터로 취급하고, 결과를 다른 작업에 사용하기 전에 일치 판단 논리를 검토하세요.
관련 가이드
OpenAI와 pandas 공식 참고 문서를 2026년 10월 15일 확인했습니다. E1–E3는 편집용 가상 입력입니다. 행 분류와 행 수 보존 집계는 별도 Python 스크립트로 독립 검산했습니다. ChatGPT 실행, Excel 테스트, pandas 실행 또는 실제 배송 조회를 수행했다는 뜻은 아닙니다.
