在HoloViz Param中,是否有一种方法可以从param.DataFrame返回选定的行?

问题描述

我正在使用Holoviz软件包组来创建仪表板。我的目标是让一个数据框充当参数/部件,以便在一个数据框中选择一行将过滤第二个数据框。

我一直在使用以下格式:

import param
import pandas as pd
import panel as pn

# just making two different sample dataframes
df = pd.util.testing.makeMixedDataFrame()
df2 = pd.util.testing.makeMixedDataFrame().sort_values(by='B').reset_index(drop=True)

class Dashboard(param.Parameterized):
    df_selector = param.DataFrame(df)

    @param.depends('df_selector')
    def filter_df(self):
        # just trying to filter the rows in the second df for the selected index values in the first df
        # the .selection behavior I am looking for is from pn.widgets that I discuss below
        return df2[df2['A'].isin(self.df_selector.selection)]
    
    def view(self):
        return self.filter_df().hvplot.table()

dash = Dashboard()
pn.Column(dash.param,dash.view)
        

这样做将返回:

AttributeError:“ DataFrame”对象没有属性“选择”

如果df_selector充当DataFrame,这是可以理解的。但是,我可以创建这样的小部件:

df_widget = pn.widgets.DataFrame(df)

当我在结果DataFrame中选择一行时,我可以通过以下方式返回选择的行的索引

df_widget.selection

如何使param.DataFrame()表现得像pn.widget.DataFrame(),或者如何将pn.widget.DataFrame()链接到参数,以便可以实时更新?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)