KeyError: ‘passes columns are not ALL present dataframe‘

本文探讨了使用Pandas将DataFrame存储到Excel时遇到的KeyError异常,详细展示了代码片段及尝试解决该问题的过程。作者在存储过程中遇到了'passescolumnsarenotALLpresentdataframe'错误,尽管数据和存储方法本身没有问题。文章记录了具体的代码实现,包括读取和保存文件的方法,为读者提供了排查和解决问题的思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KeyError: 'passes columns are not ALL present dataframe'

pandas将dataframe存入表格报错,暂时没找到原因,数据是没问题的,存储方法之前存储其他的也是没问题的。
留个坑

在这里插入图片描述

df_res = find_menu_by_url_method()		# 这个方法返回一个dataframe结构
# 存储
print(df_res.info())
# 最后存储的这句报错
with pd.ExcelWriter(OUTPUT2, mode='a') as writer:  # pylint: disable=abstract-class-instantiated
    df_res.to_excel(writer, index=False, columns=HEADER)

忘记啥玩意错误了,现在代码如下

def read_file(path) -> pd.DataFrame:
    is_exist = os.path.exists(path)
    if not is_exist:        # 校验表格存在性
        df = pd.DataFrame(columns=HEADER)
        # 新建文件并写表头
        df.to_excel(path, index=False)
    df = pd.read_excel(path)    # 读取源文件
    return df


def save_file(res_dict: dict, path: str = None) -> None:    # sheet_name: str = 'Sheet1',
    '''将所有的结果保存在一个sheet中,添加一列仓库名用来区分公司
    '''
    df = read_file(path)    # 打开目标文件
    index = 0
    for i, (k, v) in enumerate(res_dict.items()):
        for url, type in zip(v[0], v[1]):
            df.loc[index] = [k, url, type]
            index += 1
    with pd.ExcelWriter(path, mode='a') as writer:  # pylint: disable=abstract-class-instantiated
        df.to_excel(writer, index=False, columns=HEADER, sheet_name='res')
    # 移除无用sheet页面
    res_excel = openpyxl.load_workbook(path)
    res_excel_sheet = res_excel["Sheet1"]
    res_excel.remove(res_excel_sheet)
    res_excel.save(path)
    print("创建并写入sheet页成功!")
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值