You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中匹配DataFrame指定列并批量重命名的实现方案

需求说明

给定列名列表:

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']

需要实现:

  • 将DataFrame中匹配以下列名的字段统一重命名为entity_name:
    Subsidiary、Subsidiaries、Company Name、Legal Name、Entity、Name of Company/Jurisdiction of Incorporation or Formation、Name of Company
  • 将匹配以下类别的列名统一重命名为entity_place:
    包含Jurisdiction、Place of Formation、State of Incorporation的列

示例展示

示例1

原始DataFrame(df1):

SubsidiaryJurisdiction
A1X1
A2X2
A3X3

处理后结果:

entity_nameentity_place
A1X1
A2X2
A3X3

示例2

原始DataFrame(df2):

Legal NamePlace of Formation
A1X1
A2X2
A3X3

处理后结果:

entity_nameentity_place
A1X1
A2X2
A3X3

实现方法

以下提供两种Python实现方案,基于pandas库完成列名重命名:

方案1:正则匹配动态判断

适合列名存在变体、需要模糊匹配的场景,通过自定义函数结合正则表达式实现:

import pandas as pd
import re

def rename_columns(col_name):
    # 匹配entity_name的精确正则规则
    entity_name_patterns = [
        r'^Subsidiary$', r'^Subsidiaries$',
        r'^Company Name$', r'^Legal Name$',
        r'^Entity$', r'^Name of Company/Jurisdiction of Incorporation or Formation$',
        r'^Name of Company$'
    ]
    if any(re.match(pattern, col_name) for pattern in entity_name_patterns):
        return 'entity_name'
    
    # 匹配entity_place的包含规则
    entity_place_keywords = ['Jurisdiction', 'Place of Formation', 'State of Incorporation']
    if any(keyword in col_name for keyword in entity_place_keywords):
        return 'entity_place'
    
    # 未匹配到规则的列保留原名
    return col_name

# 测试示例1
df1 = pd.DataFrame({
    'Subsidiary': ['A1', 'A2', 'A3'],
    'Jurisdiction': ['X1', 'X2', 'X3']
})
df1_renamed = df1.rename(columns=rename_columns)

# 测试示例2
df2 = pd.DataFrame({
    'Legal Name': ['A1', 'A2', 'A3'],
    'Place of Formation': ['X1', 'X2', 'X3']
})
df2_renamed = df2.rename(columns=rename_columns)

方案2:预构建重名字典

适合列名固定已知的场景,提前构建映射字典,执行效率更高:

import pandas as pd

# 给定的列名列表
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']

# 构建重名字典
rename_dict = {}

# 添加entity_name的映射
entity_name_cols = ['Subsidiary', 'Subsidiaries', 'Company Name', 'Legal Name', 'Entity', 'Name of Company/Jurisdiction of Incorporation or Formation', 'Name of Company']
for col in entity_name_cols:
    rename_dict[col] = 'entity_name'

# 添加entity_place的映射
entity_place_cols = [col for col in col_list if 'Jurisdiction' in col or 'Place of Formation' in col or 'State of Incorporation' in col]
for col in entity_place_cols:
    rename_dict[col] = 'entity_place'

# 执行重命名
df_renamed = df.rename(columns=rename_dict)

内容的提问来源于stack exchange,提问作者emiley mille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:38:15