我有一段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之间的兼容,但是不知道如何处理