python - TypeError: Value must be a sequence - Python/Pandas/OpenPyXL
问题描述
我对 Python 和一般编码非常陌生(学习 1.5 周)。
我对这段代码的目标是打开一个包含许多工作表的文件。但我只会使用其中两张。我想将一列数据从 sheet2 复制到 sheet1。然后,我想将包括所有其他工作表在内的整个工作簿保存为具有新名称的新文件。由于 sheet2 中有 7 列数据,并且我一次只将一列迭代到 sheet1,因此我最终应该得到 7 个具有 7 个单独文件名的单独文件。
我一直在使用一个非常简单的模拟文件来练习代码。有效!
但是当我尝试使用包含许多工作表和数据的真实文件时,我收到了这个错误:
TypeError:值必须是一个序列。
Traceback (most recent call last):
File "C:\Users\PycharmProjects\CopyFile\main.py", line 11, in <module>
wb_master = xl.load_workbook('Master.xlsx')
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
reader.read()
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\reader\excel.py", line 280, in read
self.read_worksheets()
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\reader\excel.py", line 266, in read_worksheets
pivot = TableDefinition.from_tree(tree)
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 83, in from_tree
obj = desc.from_tree(el)
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\descriptors\sequence.py", line 85, in from_tree
return [self.expected_type.from_tree(el) for el in node]
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\desciptors\sequence.py", line 85, in <listcomp>
return [self.expected_type.from_tree(el) for el in node]
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
return cls(**attrib)
File "C:\Users\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\pivot\table.py", line 601, in __init__
self.x = x
File "C:\Users\Kevin\PycharmProjects\CopyFile\venv\lib\site-packages\openpyxl\descriptors\sequence.py", line 25, in __set__
raise TypeError("Value must be a sequence")
TypeError: Value must be a sequence
这是我的代码:
import pandas as pd
import openpyxl as xl
from shutil import copyfile
df_aging = pd.read_excel('Master.xlsx', sheet_name='Aging', skiprows=1, usecols='C:I')
df_support = pd.read_excel('Master.xlsx', sheet_name='Supporting Items Import', usecols='A:E')
aging_col = df_aging.columns
master_file = 'Master.xlsx'
wb_master = xl.load_workbook('Master.xlsx')
ws_master = wb_master.worksheets[0]
gl_dict = {11111: 'DESCRIPTION 1',
22222: 'DESCRIPTION 2',
33333: 'DESCRIPTION 3',
44444: 'DESCRIPTION 4',
55555: 'DESCRIPTION 5',
66666: 'DESCRIPTION 6',
77777: 'DESCRIPTION 7'}
file_name_dict = {11111: 'FILENAME 1',
22222: 'FILENAME 2',
33333: 'FILENAME 3',
44444: 'FILENAME 4',
55555: 'FILENAME 5',
66666: 'FILENAME 6',
77777: 'FILENAME 7'}
month = input("Enter month (##): ")
year = input("Enter year (####): ")
for col in aging_col:
output_file = f'{month}-{year} {file_name_dict[col]}.xlsx'
copyfile(master_file, output_file)
for x in range(0, 5):
wb_output = xl.load_workbook(output_file)
ws_output = wb_output.worksheets[1]
df_support['Amount'] = df_aging[col]
ws_output.cell(row=x+5, column=4).value = df_support['Amount'][x]
ws_output.cell(row=x+5, column=5).value = gl_dict[col]
wb_output.save(output_file)
解决方案
尝试指定文件路径,如下所示:
wb = openpyxl.load_workbook(filename='C:\Users\filepath\Master.xlsx')
推荐阅读
- javascript - 迭代并显示现有表中的json数据 - jquery
- c# - 单个xml对象作为sql中的json数组
- scala - Spark UDF 找不到参数 num 的隐式值:Numeric [Nothing]
- python - 具有公钥身份验证的 JupyterHub
- php - 使用 array_unshift 后“试图获取非对象的属性”
- tensorflow - 为什么 DeepLabV3+ 生成的所有图像都只变成黑色?
- python - opencv python中每个通道的HSV,YCrCb和LAB颜色空间中的像素值范围是多少
- javascript - React.js 项目中的 D3.js 问题
- binary - 为什么 idapython 得到的函数与使用 IDA 在函数窗口中显示的不一样?
- excel - 如何在 SAS studio 中指示每个属性的类型