如何从JIRA导出的XLSB文件中用Pandas提取字段生成字典列表?
解决JIRA导出XLSB文件读取时的KeyError问题
先确认真实列名情况
JIRA导出的xlsb文件经常存在列名带空格、大小写不一致,或者你以为的列名行实际不是有效表头的情况。先打印读取后的列名和前几行数据,定位问题:
import pandas as pd df = pd.read_excel(imported_file, skiprows=2) # 打印所有列名 print(df.columns.tolist()) # 查看前5行数据,确认表头行是否正确 print(df.head())
清洗列名(最常见的解决方法)
如果发现列名有前后空格、大小写差异,先统一格式:
# 去除列名前后空格,转小写(也可以转大写) df.columns = df.columns.str.strip().str.lower() # 用清洗后的列名提取数据 result = df[['key', 'summary', 'status']].to_dict('records')
如果想保留原大小写,只去空格:
df.columns = df.columns.str.strip() result = df[['Key', 'Summary', 'Status']].to_dict('records')
调整表头读取位置
有时候JIRA导出的文件前两行之后还有空行,导致列名实际在第4行(索引3),可以直接指定表头行位置:
# 指定第3行(索引2)为表头,同时跳过前2行 df = pd.read_excel(imported_file, header=2) # 如果列名在第4行,就跳过前3行,指定第0行(当前第一行数据)为表头 df = pd.read_excel(imported_file, skiprows=3, header=0)
用列索引强制提取
如果列名解析完全混乱,直接通过索引定位列:
# 先打印索引和对应列名,确认目标列的位置 for idx, col_name in enumerate(df.columns): print(f"索引{idx}: {col_name}") # 假设Key在索引0,Summary在1,Status在2,重命名后转字典列表 result = df.iloc[:, [0,1,2]] \ .rename(columns={0:'Key', 1:'Summary', 2:'Status'}) \ .to_dict('records')
依赖库检查
确保已经安装pyxlsb,pandas读取xlsb格式必须依赖这个库:
pip install pyxlsb
内容的提问来源于stack exchange,提问作者Mr. E
相关产品推荐
相关产品推荐

