Beispiel #1
0
    def create_filter(self, field: str) -> None:
        big_boxes = []

        dtype = self.df[field].dtype.name
        if 'float' in dtype:
            slider = FloatSlider
            slide = slider(min=self.df[field].min(),
                           max=self.df[field].max(),
                           step=0.001)
        elif 'int' in dtype:
            slider = IntSlider
            slide = slider(
                min=self.df[field].min(),
                max=self.df[field].max(),
            )
        else:
            print(f"filter of {dtype} not supported")
            slider = SelectionSlider
            slide = slider(options=sorted(map(str, set(list(self.df[field])))))

        btn = Button(description="Run Filter")
        btn.on_click(self.execute_filter)

        print(f"NaN count: {(self.df[field].isna()).sum()}")

        widget = VBox([
            Label(f"Range for {field}"),
            Dropdown(options=[
                "Larger Than or equal to", "Smaller Than or equal to"
            ]), slide,
            Checkbox(description="Remove NaN", value=True), btn
        ])
        self.widget = widget
        widget.original_name = field

        display(widget)