Search code examples
pythonpandas

match columns from column list in a dataframe and rename them in python?


I have column list -

col_list = ['Subsidiary','State of Jurisdiction of Incorporation','Jurisdiction ofIncorporationor Organization','Jurisdiction of Incorporation or Organization', 'Subsidiaries','State or Other Jurisdiction of Organization','Jurisdiction ofIncorporation orOrganization', 'Company Name', 'State of Incorporation', 'Legal Name','Entity','Name of Company/Jurisdiction of Incorporation or Formation','Place of Formation','Name of Company']

Can I match if my dataframe has these columns using regex or any other library in python like Subsidiary,Subsidiaries,Company Name,Legal Name,Entity,Name of Company/Jurisdiction of Incorporation or Formation,Name of Company , then rename it as 'entity_name' and another column like Jurisdiction, State of Jurisdiction,Place of Formation then rename it as 'entity_place' ?

Example -

df1 -
|Subsidiary|Jurisdiction|
|A1|X1|
|A2|X2|
|A3|X3|

expected output -
|entity_name|entity_place|
|A1|X1|
|A2|X2|
|A3|X3|
df2-
|Legal Name|Place of Formation|
|A1|X1|
|A2|X2|
|A3|X3|

Expected output-
|entity_name|entity_place|
|A1|X1|
|A2|X2|
|A3|X3|

Any help would be appreciated.


Solution

  • If there are 2 lists for entity_name and entity_place create dictionary and pass to rename:

    L1 = ['Subsidiary','Subsidiaries','Company Name','Legal Name', 'Entity',
          'Name of Company/Jurisdiction of Incorporation or Formation','Name of Company']
    L2 = ['Jurisdiction', 'State of Jurisdiction','Place of Formation']
    
    d = {**dict.fromkeys(L1, 'entity_name'), **dict.fromkeys(L2, 'entity_place')}
    
    out = df.rename(columns=d)