Xlsxwriter将不同的格式转换为同一列中的不同单元格

时间:2016-06-15 12:11:17

标签: python excel pandas xlsxwriter

设置不同单元格的格式时遇到问题。我有两个数据帧,其中包含应以不同格式显示的数字。我创建了一个简单的例子来展示我的问题。

import pandas as pd
import numpy as np
import xlsxwriter

frame1 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),  columns=list('ABCD'))

#want to show this frame as percentage in Excel later
frame2 = pd.DataFrame(np.random.randint(0,100,size=(10, 4)),    columns=list('EFGH'))

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

frame1.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow= 0)

frame2.to_excel(writer, sheet_name='Sheet1', startcol= 0, startrow = (2 + len(frame1)))

writer.save()

此代码生成此Excel工作表:

Shows output

现在问题是我可能想要将标记为黄色的单元格设置为%或其他格式。我知道我可以在整个列或行上设置格式,但我无法解决如何为某些特定单元格设置格式。我想有一些非常简单的解决方案。

2 个答案:

答案 0 :(得分:3)

解决方法是使用conditional_format,如@jmcnamara所述,您只需应用{'type': 'top','value': str(f2rows),'format': format1},其中f2rows是数据帧的行数和{{1是你想要应用的格式。

format1

答案 1 :(得分:2)

Excel中的列格式适用于整个列,只能由行格式或单元格格式覆盖。

因此,您需要将单元格格式应用于要进行不同格式化的单元格,而Pandas界面则无法实现。

另一种方法是对您感兴趣的单元格区域使用条件格式。例如,请参阅XlsxWriter文档中的this Pandas program