我有一个包含近 40,000 行条目的 Excel 电子表格。我想根据从第 6 行开始的 C 列中的值将此 Excel 文件拆分为多个文件。我已经能够确定如何拆分文件,但我似乎遇到的挑战是将标题行结转。这是 ArchivesSpace 应用程序的特定模板,无论出于何种原因,第 1-5 行中的信息都必须存在。我尝试删除此信息并仅使用域代码,但没有成功。这是我尝试过的代码:
import pandas as pd
import os
import openpyxl
df = pd.read_excel('container_list_master.xlsx')
column_name = 'ead'
unique_values = df[column_name].unique()
for unique_value in unique_values:
df_output = df[df[column_name].str.contains(unique_value)]
output_path =os.path.join('output', unique_value + '.xlsx')
df_output.to_excel(output_path, sheet_name=unique_value, index=False)
通过一些细微的修改,您的代码可以适应产生您想要的输出。
为了拥有这一切,您缺少的几个要点:
df = pd.read_excel('container_list_master.xlsx', skiprows=range(4))
该行具有 skiprows
参数,它的作用与听起来完全一样,允许您在读取文件时跳过前几行非表格行。df_output.to_excel(output_path, sheet_name=unique_value, startrow=4, index=False)
startrow
与 skiprows
的概念相同,但写作除外。import pandas as pd
import os
# import openpyxl
df = pd.read_excel('container_list_master.xlsx', skiprows=range(4))
column_name = 'EAD ID'
unique_values = df[column_name].unique()
for unique_value in unique_values:
df_output = df[df[column_name].str.contains(unique_value)]
output_path = os.path.join('output', unique_value + '.xlsx')
writer = pd.ExcelWriter(output_path)
df_output.to_excel(writer, sheet_name=unique_value, startrow=4, index=False)
writer.sheets[unique_value].cell(1, 1, 'This is the template for importing ...')
writer.sheets[unique_value].cell(2, 1, 'Mapping - ArchivesSpace ... SECTION')
writer.sheets[unique_value].cell(3, 1, 'Mapping - ArchivesSpace ... FIELD')
writer.sheets[unique_value].cell(4, 1, 'ArchivesSpace field code ...')
writer.sheets[unique_value].cell(2, 2, 'Resource ...')
writer.sheets[unique_value].cell(3, 2, 'The resource ...')
writer.sheets[unique_value].cell(4, 2, 'Collection id ...')
writer.sheets[unique_value].cell(2, 3, 'Resource ...')
writer.sheets[unique_value].cell(3, 3, 'EAD ID ...')
writer.sheets[unique_value].cell(4, 3, 'ead ...')
writer.sheets[unique_value].cell(4, 4, 'res_uri')
writer.sheets[unique_value].cell(4, 5, 'ref_id')
writer.sheets[unique_value].cell(4, 6, 'title')
writer.sheets[unique_value].cell(4, 7, 'something unique')
writer.close()
输出看起来有点俗气,但如果这只是软件的导入那么谁在乎呢?如果答案是您,那么这里有一个链接,其中包含有关如何格式化它的信息:xlsx writer文档或来自本网站上的另一个优秀答案。
如果您有任何疑问,请告诉我!