【版本求助】最新影刀升级之后导致原来的python代码中的pandas报错,之前可以正常使用
回答
收藏

【版本求助】最新影刀升级之后导致原来的python代码中的pandas报错,之前可以正常使用

陈伟163
2024-08-26 23:54·浏览量:695
陈伟163
发布于 2024-08-26 23:54695浏览

我有一段python代码,主要功能是读取一个表格所有的sheet中的指定列,然后合并到一个sheet中。之前正常运行,但是最近影刀好像升级了,就一直报错:TypeError: __init__() got an unexpected keyword argument 'id'

目前影刀信息

影刀: 5.20.22 社区版  (64位)

Windows: Microsoft Windows 10.0.19045 64位

.NET: .NET 6.0.24

当前用户: 708890110034804738

安装目录: C:\Program Files\ShadowBot\shadowbot-5.20.22\

用户目录: C:\Users\Admin\AppData\Local\ShadowBot\users\708890110034804738

日志目录: C:\Users\Admin\AppData\Local\ShadowBot\log

代码部分

import xbot

from xbot import print, sleep

from .import package

from .package import variables as glv  

import pandas as pd

import numpy as np

import os

import openpyxl


def main(args):

   input_file_path = args['input_file_path']  

   bianma = args['column_names'][0]

   output_file_path = rf"{os.path.dirname(input_file_path)}\货盘合并输出.xlsx"  

   glv['output_file_path1'] = rf"{os.path.dirname(input_file_path)}\货盘合并输出.xlsx"

   print(input_file_path)

   print(output_file_path)

   print(bianma)

   print(args['column_names'])

   # 读取所有工作表  

   xls = pd.ExcelFile(args['input_file_path'])

    # 就是这一行报错:TypeError: __init__() got an unexpected keyword argument 'id'  

   all_sheets = {sheet_name: pd.read_excel(xls, sheet_name=sheet_name,usecols=args['column_names']) for sheet_name in xls.sheet_names}

   print(all_sheets)

   # 初始化一个空的DataFrame列表,用于存储非空的DataFrame  

   non_empty_dfs = []

   # 遍历所有工作表,收集非空的DataFrame  

   for sheet_name, df in all_sheets.items():  

       if not df.empty:  # 检查DataFrame是否为空  

           df[bianma] = df[bianma].replace('', np.nan)

           df.dropna(subset=[bianma], inplace=True)

           # 转换'商家编码'列的数据类型为字符串  

           df[bianma] = df[bianma].astype(str)

           if glv['货品编号是否加0'] == True :

           #df['商家编码'] = df['商家编码'].apply(lambda x: '00' + x if not pd.isna(x) and not x.startswith('00') else x)  

           # 删除尾随的'.0'(如果存在)

               df[bianma] = df[bianma].str.rstrip('.0')

               df[bianma] = df[bianma].apply(lambda x: ('00' + x.partition('\n')[0]) if not x.partition('\n')[0].startswith('00') else x.partition('\n')[0])  

           # 将清理后的DataFrame添加到列表中  

           non_empty_dfs.append(df)  

   # 如果存在非空的DataFrame,则将它们连接成一个大的DataFrame  

   if non_empty_dfs:  

       merged_data = pd.concat(non_empty_dfs, ignore_index=True)  

   else:  

       # 如果没有非空的DataFrame,则创建一个空的DataFrame(可选)  

       merged_data = pd.DataFrame()  

   # 将“合并”工作表添加到字典的开头  

   all_sheets = {'合并': merged_data, **all_sheets}  

   new_columns = ['货品编号', '原价', '直播价', '折扣']

   merged_data.columns = new_columns

   with pd.ExcelWriter(output_file_path, engine='xlsxwriter') as writer:  

       # 将合并后的数据写入名为“合并”的sheet表中  

       merged_data.to_excel(writer, sheet_name='合并', index=False)


尝试过的方案

尝试了删除pandas包重新安装,也还是不行,问了一圈可能是python版本跟pandas之间的兼容,但是不知道如何处理

收藏
全部回答1
最新
发布回答
回答