首页 > 解决方案 > dtale 在用户输入后重新加载数据单元

问题描述

我有这个 python 脚本:

import pandas as pd 
import dtale
#import dtale.app as dtale_app
df = pd.DataFrame([dict(firstname="cris", lastname="zane"), 
                    dict(firstname="joe",lastname="biden"), 
                    dict(firstname="kamala",lastname="harris")])


search_query = ""
print("Hi once you want to stop just enter stop")
while search_query != "stop":
    search_query = input("Enter your search query: ")
    print(search_query)
    d = dtale.show(df.loc[df["firstname"]==search_query,:],ignore_duplicates=True)
   
    print(d._url)

它需要用户输入来过滤数据帧,然后将其传递给 dtale.show() 方法。但是,数据视图不会改变。例如,用户首先在数据框中搜索 joe,然后再搜索 kamala。

Hi once you want to stop just enter stop
Enter your search query: joe
joe
http://Cristians-MBP:40000
Enter your search query: kamala
kamala
http://Cristians-MBP:40000
Enter your search query: kamala
kamala
http://Cristians-MBP:40000
Enter your search query: 

但是即使在刷新并单击重新加载数据后视图也不会更新。数据视图仍然显示之前的视图

我相信通过在 dtale.show() 方法中设置参数 ignore_duplicates=True 应该会阻止它加载以前加载的数据,但它仍然会这样做。

标签: pythonpandasdata-visualization

解决方案


如果您更改代码以运行

print(d._main_url)

代替

print(d._url)

那应该可以解决您的问题。“_url”是运行 D-Tale 的 URL 的基础。该属性可能应该重命名为“_origin”而不是“_url”。“_main_url”还包括您刚刚加载的数据的路由(例如:/dtale/main/1)。

你也可以运行

dtale.instances()

这将打印出当前加载到 D-Tale 中的所有数据及其完整 URL。


推荐阅读