Skip to main content

field-match

Web app PyPI CI Docs License: MIT

Names, types, and values can all shift between data releases, quietly breaking anything downstream that assumes a stable schema. field-match builds a column crosswalk between two dataset versions: it compares every column pair on name and content, then reports which columns still match (verified), which appear renamed, which share a name but no longer match in content (suspect), and which were added or dropped.

The alternative is checking column by column, by hand and against documentation that may be buried. field-match makes that first pass in one call and flags what needs review.

Unlike other libraries in the data validation and data quality ecosystem, field-match builds the crosswalk itself rather than assuming you already have one. Some tools diff values once you know the mapping; others require you to write the mapping out as rules. field-match instead treats your last clean release as the reference and works the mapping out from name and content matching. It works across numeric, datetime, boolean, and text columns, reads CSV, Stata, SAS, and fixed-width files with no extra dependencies, plus Excel, Parquet, SPSS, and R via optional extras, and a browser-based version (no install) runs the same matching in-browser via Pyodide.

Developed for recurring public-interest data releases, where column drift is common.

No Python? Try the web app: https://cstirry.github.io/field-match/. Drop in two files, nothing to install.

Quick start

pip install field-match
from field_match import compare, read_table

new_data = read_table("survey_2022.xlsx")
report = compare("survey_2021.csv", new_data)
print(report)
  16  verified  column name and contents both match
  64  renamed   contents match, but under a different column name
   4  suspect   column name matches, but contents do not
  21  dropped   missing from the new dataset
  76  added     missing from the reference dataset

Review the proposed mapping, then apply it: df = report.apply(new_data). The reference can be a previous dataset, a list of expected column names, or a fitted sklearn model.

Full documentation: the report in depth, supported file formats, tuning, how matching works, and the API reference.

Examples with real data

Four scripts in examples/ download real government releases and crosswalk them to identify column drift:

  1. CDC/ATSDR Social Vulnerability Index (cdc_atsdr_svi.py, or as a notebook: cdc_atsdr_svi.ipynb / Colab): column name reused differently
  2. CDC 500 Cities/PLACES (cdc_places.py): column renames identified by content
  3. IMLS Public Libraries Survey (imls_pls.py): thirty years of column drift
  4. NAMCS (namcs_formats.py): SAS, Stata, and R datasets

Walkthroughs in the docs.

Development

See CONTRIBUTING.md for setup, tests, docs, and the release process.

License

MIT; see LICENSE.

Release files for field-match 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for field-match 0.4.0
File Size Uploaded
field_match-0.4.0.tar.gz 85.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for field-match 0.4.0
File Interpreter ABI Platform
field_match-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 110.0 kB

Release files / field_match-0.4.0.tar.gz

Download URL field_match-0.4.0.tar.gz
Size 85.2 kB
Tags Source
SHA-256 checksum
How to use checksums
17ec61c3bf7d953f89928ecc9f52cc7478c6293e070d9308ef35adc15696c60e
BLAKE2b-256 checksum
How to use checksums
466744bbd4b526cd2161f3da15e3e390ffb3335a7c9628e2c453ac65abf0a2f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release files / field_match-0.4.0-py3-none-any.whl

Download URL field_match-0.4.0-py3-none-any.whl
Size 24.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7795d5b1e03954e668838bf9760460b82442d647ad0d95afd815debd56eb4dd9
BLAKE2b-256 checksum
How to use checksums
5d2d6eec5c469063df7c6fb6b6b3852760e4f9d350decb3ddd650e894941a592
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page