import pandas as pd
# Load dataframes 0 and 00 with grant and gift specific columns
df0 = pd.read_csv('test_sample.csv', usecols=
('typeCategory','tran_id',
'issue_d','disbursement_d','fund_id','fund_nm', 'amount','grantee_legal_nm'))
df00 = pd.read_csv('test_sample.csv', usecols=
('typeCategory','tran_id',
'issue_d','fund_id','fund_nm', 'amount'))
# define df1 and df2 selecting only those of appropriate type category
df1 = df0[df0['typeCategory'] == 'grant']
df2 = df00[df00['typeCategory'] == 'gift']
# create list of ids to iterate through
grantingFundID = list(df0['fund_id'].values)
#cell_format = workbook.add_format()
#df1.columns
# load logo file as binary
# read image data into variable to be used in loop to follow
image_file = open('logo1.png', 'rb')
image_data = io.BytesIO(image_file.read())
# loop through both df1 and df2 (grants/gifts) for each fund_id
for fund_id in grantingFundID:
df3= df1[df1['fund_id'] == fund_id]
df4= df2[df2['fund_id'] == fund_id]
# create writer object set engine to xlsx writer, drop index col
writer = pd.ExcelWriter(str(fund_id)+'.xlsx', engine='xlsxwriter')
df3.to_excel(writer, 'grants',index=False)
df4.to_excel(writer, 'gifts',index=False)
# create workbook object
workbook = writer.book
# Create worksheet object for first tab
worksheet = writer.sheets['grants']
'''setup grants tab formatting'''
# set_margins so as not to overlap startings rows with header png
worksheet.set_margins(top=1.3)
#set header row and insert left &L logo.png. Used &G (&[Picture] could have
#also been used.
worksheet.set_header('&L&G', {
'image_left': 'logo.png',
'image_data_left': image_data
})
# set column width
worksheet.set_column(0,30,20)
# write gifts tab
worksheet = writer.sheets['gifts']
# setup gifts tab formatting
# ...
workbook.close()
Предыдущий код генерирует две вкладки в новом файле xlsx, используя данные, считанные из CSV.Я генерирую 1500+ файлов.В настоящее время код работает.Я ищу способ оптимизировать мой подход, поскольку генерация файлов в настоящее время занимает около 20 минут.Есть ли лучший подход к этой проблеме?