[英]Xlsxwriter different formats to different cells in same column
設置不同單元格的格式時遇到問題。 我有兩個數據幀,其中包含應以不同格式顯示的數字。 我創建了一個簡單的例子來展示我的問題。
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工作表:
現在問題是我可能想要將黃色標記的單元格設置為%或其他格式。 我知道我可以在整個列或行上設置格式,但我無法解決如何為某些特定單元格設置格式。 我想有一些非常簡單的解決方案。
解決方法是使用conditional_format
,如@jmcnamara所述,你只需應用{'type': 'top','value': str(f2rows),'format': format1}
,其中f2rows
是行數您的數據format1
和format1
是您要應用的格式。
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)))
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
f2rows = frame2.shape[0]
startR = 4 + len(frame1)
endR = startR + f2rows -1
# Apply a conditional format to the cell range.
format1 = workbook.add_format({'bg_color': '#FFFF00',
'font_color': '#9C0006'})
worksheet.conditional_format('C{}:C{}'.format(startR, endR), {'type': 'top',
'value': str(f2rows),
'format': format1})
worksheet.conditional_format('E{}:E{}'.format(startR, endR), {'type': 'top',
'value': str(f2rows),
'format': format1})
writer.save()
Excel中的列格式適用於整個列,只能由行格式或單元格格式覆蓋。
因此,您需要將單元格格式應用於要進行不同格式化的單元格,而Pandas界面無法實現這種格式。
另一種方法是對您感興趣的單元格區域使用條件格式。例如,請參閱XlsxWriter文檔中的此Pandas程序 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.