반응형 전체 글402 pandas concat에서 열이 어긋날 때: ignore_index·join과 열 이름 검사 CSV 두 개를 세로로 붙였는데 점수 열이 두 개가 되고 결측값이 생겼다면, 먼저 열 이름을 확인하세요. ignore_index=True는 새 행 인덱스를 만들 뿐, 열 이름을 통일하거나 데이터를 위치 순서대로 합치지 않습니다. 기본 axis=0에서는 같은 열 이름끼리 맞춥니다.이 글은 동일한 형식이어야 하는 월별·분할 CSV를 합치는 상황을 다룹니다. 고객 번호처럼 특정 키로 두 표의 정보를 연결하려는 작업은 merge의 검색 의도에 더 가깝습니다. 아래 작은 데이터로 열 정렬, 공백 검사, 인덱스 검증을 순서대로 확인할 수 있습니다.예제는 pandas 2.2.3에서 확인했습니다. 코드는 위에서부터 같은 Python 세션에서 실행하세요. NumPy 등 의존성 버전에 따라 일부 스칼라 값의 출력 표시는 .. 2026. 10. 11. Python 기본 인자 리스트에 값이 쌓이는 이유: None·sentinel로 분리하기 함수를 두 번 호출했는데 기본 리스트에 이전 값이 남는다면 기본 인자가 함수 정의 시 한 번 만들어진 객체인지 확인하세요. items=[]는 인자를 생략할 때마다 새 리스트를 만드는 표현이 아닙니다. 생략한 호출마다 새 리스트가 필요하면 기본값을 None으로 두고 함수 안에서 생성합니다.Python 3.12.14에서 아래 예제를 실행했습니다. 같은 객체를 가리키는지 확인하는 is와 내용 비교를 나눠 봅니다. 리스트뿐 아니라 변경 가능한 기본 딕셔너리·집합도 같은 문제를 일으킬 수 있습니다.1. 호출마다 기본 리스트를 다시 만들지 않습니다def append_bad(value, items=[]): items.append(value) return itemsfirst = append_bad("A")p.. 2026. 10. 10. SQL OFFSET에서 페이지가 중복될 때: 동점 정렬과 키셋 페이지네이션 첫 페이지를 읽은 뒤 새 글이 들어오면 OFFSET으로 다음 페이지를 읽을 때 이전 글이 다시 나올 수 있습니다. 정렬 순서를 고정하는 것과 조회 사이에 바뀐 데이터의 영향을 줄이는 것은 별개의 문제입니다. 최신순 목록을 앞으로 이어 읽는 화면이라면 마지막 행의 정렬 값을 커서로 사용하는 키셋 페이지네이션을 검토하세요.예제는 Python 3.12.14·SQLite 3.53.1의 메모리 데이터베이스에서 실행했습니다. 작성 시각은 가상 데이터이며, NULL 없이 동일한 시간대와 고정된 날짜 형식을 사용합니다. 다른 DB에서는 행 값 비교 문법과 실행 계획을 확인해야 합니다.1. 동점까지 구분하는 정렬을 먼저 정합니다import sqlite3db = sqlite3.connect(":memory:")db.exe.. 2026. 10. 10. pandas qcut에서 구간이 줄어들 때: duplicates·labels와 경계값 확인 qcut으로 사분위를 만들었는데 구간이 세 개만 나오거나 labels 오류가 발생한다면 같은 값 때문에 분위수 경계가 겹쳤는지 확인하세요. duplicates="drop"은 겹친 경계를 제거합니다. 요청한 구간 수를 그대로 보장하는 옵션이 아니므로, 반환된 경계와 실제 범주 수에 맞춰 이름을 붙여야 합니다.아래 예제는 Python 3.12.14·pandas 2.2.3에서 실행했습니다. 숫자는 설명을 위한 작은 가상 점수입니다. 그림은 개념 설명이며 정확한 경계와 결과는 코드 출력에서 확인합니다.1. 네 구간을 요청해도 경계가 겹칠 수 있습니다import pandas as pdscores = pd.Series([0, 0, 0, 0, 1, 2, 3, 4])try: pd.qcut(scores, q=4)e.. 2026. 10. 10. Python itertools.groupby에서 같은 키가 나뉘는 이유: 정렬과 이터레이터 수명 itertools.groupby를 썼는데 A 그룹이 두 번 나온다면 같은 키가 연속해 있는 구간만 묶는 함수라는 점을 확인하세요. 전체에서 같은 키를 하나로 모으려면 동일한 키 함수로 먼저 정렬할 수 있습니다. 반대로 원래 흐름의 연속 구간을 분석하려면 정렬하지 않습니다.Python 3.11.15의 표준 라이브러리만 사용한 예제입니다. SQL GROUP BY나 pandas groupby와 이름은 비슷해도 입력 순서와 이터레이터 수명에 관한 동작이 다릅니다.1. A가 떨어져 있으면 서로 다른 구간입니다from itertools import groupbydata = ["A", "A", "A", "B", "B", "A", "A"]runs = [(key, list(group)) for key, group in .. 2026. 10. 9. SQL LAG가 전날 값을 못 찾는 이유: 이전 행과 전일 비교 LAG로 구한 값이 전날 매출과 다르다면 날짜가 아니라 이전 행을 읽고 있는지 확인하세요. 날짜가 빠진 테이블에서 LAG(sales)는 며칠 전 기록도 가져옵니다. 전일 비교가 목적이면 이전 날짜가 하루 전인지 검사하거나 하루 전 키로 직접 조인합니다.SQLite 3.53.4에서 실행한 가상 매출 데이터입니다. 날짜는 ISO 형식의 일 단위 문자열이며 한 매장·하루에 최대 한 행만 존재하도록 정의했습니다. 아래 date 함수 문법은 SQLite 기준입니다.1. 날짜 누락과 매출 결측을 따로 만듭니다CREATE TABLE daily_sales ( shop TEXT NOT NULL, day TEXT NOT NULL, sales INTEGER, PRIMARY KEY (shop, day)).. 2026. 10. 9. 이전 1 2 3 4 ··· 67 다음 반응형