我正在尝试将一种或多种样式应用于pandas
数据框,但是我无法在pandastable
表中显示所应用的样式。这是一个示例:
from tkinter import *
from pandastable import Table, TableModel
class TestApp(Frame):
def __init__(self, parent=None):
self.parent = parent
Frame.__init__(self)
self.main = self.master
self.main.geometry('600x400+200+100')
self.main.title('Table app')
f = Frame(self.main)
f.pack(fill=BOTH,expand=1)
df = TableModel.getSampleData()
df.style.highlight_max(color='lightgreen') #HERE'S THE STYLE I WANT TO APPLY
pt = Table(f, dataframe=df, showtoolbar=True, showstatusbar=True)
pt.show()
return
app = TestApp()
app.mainloop()
这将显示不应用任何样式的普通表格。
pandastable是否处理由pandas Styler创建的html / css样式,或者有什么方法可以将样式应用于pandastable表对象?
任何建议将不胜感激。
答案 0 :(得分:0)
您可以使用函数setColorByMask():
from tkinter import *
from pandastable import Table, TableModel
class TestApp(Frame):
def __init__(self, parent=None):
self.parent = parent
Frame.__init__(self)
self.main = self.master
self.main.geometry('600x400+200+100')
self.main.title('Table app')
f = Frame(self.main)
f.pack(fill=BOTH,expand=1)
df = TableModel.getSampleData()
pt = Table(f, dataframe=df, showtoolbar=True, showstatusbar=True)
for col_idx in range(len(df.columns)):
col_name = pt.model.df.iloc[:, col_idx].name
if pt.model.df[col_name].dtypes != 'object':
pt.setColorByMask(
col_name,
pt.model.df.iloc[:, col_idx] == pt.model.df.iloc[:, col_idx].max(),
'lightgreen'
)
pt.show()
return
app = TestApp()
app.mainloop()
this answer中也提供了一些详细信息。