如何设置熊猫数据框的样式并将其应用于pandastable表?

时间:2020-09-20 23:33:13

标签: python pandas pandas-styles

我正在尝试将一种或多种样式应用于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表对象?

任何建议将不胜感激。

1 个答案:

答案 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中也提供了一些详细信息。