Name matching
Name matching is a Python package for the matching of company names. This package has been developed to match the names of companies from different databases together to allow them to be merged. The package has a number of options to determine how exact the matches should be and also for the selection of different name matching algorithms.
For a more in-depth discussion of the name matching package please see the company name matching medium post
Installation
The package can be installed via PiPy:
pip install name_matching
Alternatively you could install the package by downloading the repo, navigating to the folder and run the setup in pip locally
pip install .
Usage
To see example usage of the package you can use the notebook folder. An example of the usage is also given below
import pandas as pd
from name_matching.name_matcher import NameMatcher
# define a dataset with bank names
df_companies_a = pd.DataFrame({'Company name': [
'Industrial and Commercial Bank of China Limited',
'China Construction Bank',
'Agricultural Bank of China',
'Bank of China',
'JPMorgan Chase',
'Mitsubishi UFJ Financial Group',
'Bank of America',
'HSBC',
'BNP Paribas',
'Crédit Agricole']})
# alter each of the bank names a bit to test the matching
df_companies_b = pd.DataFrame({'name': [
'Bank of China Limited',
'Mitsubishi Financial Group',
'Construction Bank China',
'Agricultural Bank',
'Bank of Amerika',
'BNP Parisbas',
'JP Morgan Chase',
'HSCB',
'Industrial and Commercial Bank of China',
'Credite Agricole']})
# initialise the name matcher
matcher = NameMatcher(number_of_matches=1,
legal_suffixes=True,
common_words=False,
top_n=50,
verbose=True)
# adjust the distance metrics to use
matcher.set_distance_metrics(['bag', 'typo', 'refined_soundex'])
# load the data to which the names should be matched
matcher.load_and_process_master_data(column='Company name',
df_matching_data=df_companies_a,
transform=True)
# perform the name matching on the data you want matched
matches = matcher.match_names(to_be_matched=df_companies_b,
column_matching='name')
# combine the datasets based on the matches
combined = pd.merge(df_companies_a, matches, how='left', left_index=True, right_on='match_index')
combined = pd.merge(combined, df_companies_b, how='left', left_index=True, right_index=True)
Contributing
All contributions are welcome. For more substantial changes, please open an issue first to discuss what you would like to change.
License
The code is licensed under the MIT/X license an extended version of the licence: MIT
Thanks
Thanks to the work of implementing name matching algorithms done in the Abydos package. These form the basis of the name matching algorithms used in this package.
Release files for name-matching 0.9.22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| name_matching-0.9.22.tar.gz | 93.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| name_matching-0.9.22-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 233.0 kB
Release files / name_matching-0.9.22.tar.gz
| Download URL | name_matching-0.9.22.tar.gz |
|---|---|
| Size | 93.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc16480c1da2fbbb857b0b9dd190fc53c5221a2d6177cf186c8cf2f733d04062
|
|
BLAKE2b-256 checksum How to use checksums |
342d064b63db1f5d098804888e25ee97a0bcedfcd38846cd273ed4b0da3dd7ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Apr 3, 2026.
Transparency logRelease files / name_matching-0.9.22-py3-none-any.whl
| Download URL | name_matching-0.9.22-py3-none-any.whl |
|---|---|
| Size | 139.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f11b0cf13512a8c8251f6c2aad0a9abedb4ec22dd9ad6ebf7083181af0ea4a29
|
|
BLAKE2b-256 checksum How to use checksums |
2abbcd0fd680f86dc91c08e3e71353601826c72c63783f6c38055f06eb15ba28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Apr 3, 2026.
Transparency log