본문으로 건너뛰기
🛠️ToolsShed

CSV 행 필터

열 값 조건으로 CSV 행을 필터링합니다.

이 도구 소개

CSV Row Filter는 열의 값을 기준으로 CSV 파일의 행을 필터링하는 브라우저 기반 도구입니다. 데이터 세트, 고객 기록, 또는 표 형식의 데이터를 다룰 때 이 도구는 코드를 작성하거나 복잡한 스프레드시트 공식을 사용하지 않고도 조건과 일치하는 행을 빠르게 추출하는 데 도움이 됩니다.

이 도구를 사용하려면 CSV 데이터를 입력 필드에 붙여넣고 열을 선택하고, 연산자(같음, 포함, 초과 등)를 선택하고, 값을 입력하여 필터 조건을 정의합니다. AND/OR 로직을 사용하여 여러 조건을 결합하여 정확한 필터를 만들 수 있습니다. 일치하는 행은 출력에 즉시 표시되며, 복사하거나 다운로드하거나 추가 필터로 더 분석할 수 있습니다.

CSV Row Filter는 데이터 분석가, 개발자, 그리고 정기적으로 표 형식의 데이터 세트를 다루는 모든 사람에게 특히 유용합니다. 일반적인 형식을 자동으로 처리하고, 원본 데이터를 보존하며, 브라우저 내에서 완전히 실행되므로 서버 업로드 없이 CSV 파일을 빠르고 안전하게 탐색하고 처리할 수 있습니다.

자주 묻는 질문

코드 구현

import csv
import io

def filter_csv(csv_text: str, column: str, condition: str, value: str) -> str:
    """
    Filter CSV rows by condition on a column.
    condition: 'contains' | 'equals' | 'gt' | 'lt' | 'not_contains'
    """
    reader = csv.DictReader(io.StringIO(csv_text))
    if reader.fieldnames is None:
        return ""
    rows = []
    for row in reader:
        cell = row.get(column, "")
        if condition == "contains" and value.lower() in cell.lower():
            rows.append(row)
        elif condition == "equals" and cell == value:
            rows.append(row)
        elif condition == "not_contains" and value.lower() not in cell.lower():
            rows.append(row)
        elif condition in ("gt", "lt"):
            try:
                if condition == "gt" and float(cell) > float(value):
                    rows.append(row)
                elif condition == "lt" and float(cell) < float(value):
                    rows.append(row)
            except ValueError:
                pass

    out = io.StringIO()
    writer = csv.DictWriter(out, fieldnames=reader.fieldnames)
    writer.writeheader()
    writer.writerows(rows)
    return out.getvalue()

csv_data = """name,age,city
Alice,30,New York
Bob,25,London
Carol,35,New York"""

print(filter_csv(csv_data, "city", "equals", "New York"))
print(filter_csv(csv_data, "age", "gt", "28"))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.