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

Python如何将Excel字母列编号映射到pandas DataFrame对应列

实现方案

1. 编写Excel字母列转0基索引的工具函数

首先实现一个通用转换函数,支持A-Z、AA、ZZ等所有Excel字母列标识转成pandas DataFrame对应的0开始的列索引,不需要手动计算:

def excel_col_to_index(col_str: str) -> int:
    # 统一转大写,兼容小写输入
    col_str = col_str.strip().upper()
    index = 0
    for c in col_str:
        index = index * 26 + (ord(c) - ord('A') + 1)
    # 转成pandas的0基索引
    return index - 1

可以先测试函数是否符合预期:

  • excel_col_to_index('A') 返回 0
  • excel_col_to_index('B') 返回 1
  • excel_col_to_index('Z') 返回 25
  • excel_col_to_index('AA') 返回 26

2. 加载JSON配置

首先修正你给出的JSON示例的语法错误(frequency字段后缺少逗号),合法配置如下:

{
    "excel_template": "template.xlsx",
    "excel_sheets": [
            {"sheet_name": "Daily",
             "id_column": "A",
             "frequency": "daily",
             "header" : "Number of Customers"
             },
            // 可以继续添加其他列的映射规则
            {"sheet_name": "Daily",
             "id_column": "B",
             "frequency": "daily",
             "header" : "Number of Products Purchased"
             }
           ]
}

加载配置的代码:

import json
import pandas as pd

with open('你的配置文件路径.json', 'r', encoding='utf-8') as f:
    config = json.load(f)

3. 重命名DataFrame列

假设你已经按如下方式读取了无表头的Excel文件:

# 以读取Daily sheet为例,header=None表示无表头
df = pd.read_excel(config['excel_template'], sheet_name='Daily', header=None)

遍历配置生成列映射规则,直接重命名:

col_map = {}
for item in config['excel_sheets']:
    if item['sheet_name'] == 'Daily':
        col_idx = excel_col_to_index(item['id_column'])
        col_map[col_idx] = item['header']

# 应用列重命名
df = df.rename(columns=col_map)

4. 调用验证

重命名完成后就可以直接用配置里的列名调取数据:

# 直接取原A列的客户数量数据
customer_count = df['Number of Customers']

如果你的配置结构是每个sheet下包含多组列映射,可以根据实际结构调整遍历逻辑,核心转换逻辑不需要改动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:03