我正在使用pandas concat将几个数据框(表)合并到excel文档中,我使用Xlsxwriter进行excel输出。
我的问题是,在下面的代码中,我指定了excel中表格的范围,用 worksheet.add_table('A1:D26')
. 这对这个例子文件来说是可行的。但在最终文件中,数据帧的数量取决于输入。所以有时从df1到df5,26行就够了。但也可以更少,可能是1或2个数据帧或更多。我可以用一个变量来代替D26吗?
例如,我可以用一个变量来代替D26吗?worksheet.add_table('A1:Dx')
其中x由用户输入定义?
先谢谢你
import pandas as pd
import xlsxwriter
df1 = pd.DataFrame({'0':['X','1','2','3'],
'1':['1','☐','☐','☐'],
'2':['2','☐','☐','☐'],
'3':['3','☐','☐','☐'],
'4':['','','','']})
df2 = pd.DataFrame({'0':['X','1','2','3'],
'1':['1','☐','☐','☐'],
'2':['2','☐','☐','☐'],
'3':['3','☐','☐','☐'],
'4':['','','','']})
df3 = pd.DataFrame({'0':['X','1','2','3'],
'1':['1','☐','☐','☐'],
'2':['2','☐','☐','☐'],
'3':['3','☐','☐','☐'],
'4':['','','','']})
df4 = pd.DataFrame({'0':['X','1','2','3'],
'1':['1','☐','☐','☐'],
'2':['2','☐','☐','☐'],
'3':['3','☐','☐','☐'],
'4':['','','','']})
df5 = pd.DataFrame({'0':['X','1','2','3'],
'1':['1','☐','☐','☐'],
'2':['2','☐','☐','☐'],
'3':['3','☐','☐','☐'],
'4':['','','','']})
result = pd.concat([df1, df2, df3, df4, df5], axis=1)
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('output')
worksheet.add_table('A1:D26', {'data': result.values.T.tolist(),'style': 'None', 'header_row': False})
workbook.close()
你可以尝试使用格式字符串。 在这里,我定义了x1和x2,然后将它们插入到你的单元格范围字符串中,并使用 %d
来指定整数格式。 字符串后面跟的是 % (<arg1>,<arg2>)
.
x1 = 2
x2 = 27
worksheet.add_table('A%d:D%d'%(x1,x2), {'data': result.values.T.tolist(),'style': 'None', 'header_row': False})
例如
worksheet.add_table('A1:Dx')
,其中x由用户输入定义?
几乎在所有情况下,XlsxWriter方法都支持两种形式的符号来指定单元格的位置。行-列符号和A1符号。
在这种情况下,XlsxWriter方法支持两种形式的符号来指定单元格的位置:行-列符号和A1符号。add_table()
同时支持行-列和A1风格的符号。以下是等价的。
worksheet.add_table(2, 1, 6, 5, { ... })
worksheet.add_table('B3:F7', { ... })
所以对于你的情况,你可以使用:
worksheet.add_table(0, 0, row_num, 4, { ... }) # A1:Dx
在这里... row_num
是一个基于你的数据帧长度或其他输入变量的零索引数。