python - 如何使流线型下拉菜单具有交互性?
问题描述
我有一个数据框如下:
sender date keyword value
0 zdf 2021-05-19 motor 2.0
1 bund_der 2021-07-13 motor 4.0
2 bund_der 2021-07-16 stator 5.0
3 infos 2021-07-25 stator 2.0
4 infos 2021-07-29 motor 1.0
我正在尝试使用streamlit制作仪表板。会有两个下拉菜单;一个从“发件人”列中选择另一个用于“关键字”列。输出将是一个折线图,其中日期位于 x 轴,值位于 y 轴。
我使用了以下代码:
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
df = pd.read_csv('all_data_streamlit.csv')
def plot_count_keyword(df):
kw_count_sender_selectbox = [st.sidebar.selectbox(
"Senders", df["sender"].unique())] # Dropdown box to select sender
kw_count_keyword_selectbox = [st.sidebar.selectbox(
"Keywords", df["Keywords"].unique())] # Dropdown box to select the keyword
df_kw_count_selected_sender = df[df['sender'].isin(kw_count_sender_selectbox)]
df_kw_count_selected_keyword = df_kw_count_selected_sender[df_kw_count_selected_sender['keyword'].isin(kw_count_keyword_selectbox)]
df_kw_count_selected_keyword.groupby(['mail_date']).sum().plot()
plt.show()
st.pyplot(fig=plt)
plot_count_keyword(df)
问题是,它只显示每个选择框的第一个元素的输出。我“想”,在选择框中选择不同的元素将重新计算一切并更新情节。
我认为,这里没有这样做。它只是固定在第一个情节上。更改选择框选择时有什么触发计算的吗?或者,我是否必须为每种情况澄清代码中的输出(例如,如果 kw_count_sender_selectbox == 'infos': 然后执行此操作)?
解决方案
推荐阅读
- python - FileToGoogleCloudStorageOperator 的替代方案
- memory - 进程之间的内存空间如何保持不同?
- ios - 删除 UITableView 部分中的所有内容后结束编辑
- nuget - VSTS 更改为 DevOps,现在我们的 Nuget 包没有进行身份验证。我们做什么?
- c# - 我有两个 WPF 控件,但是当我刷新它们的数据绑定时,只有一个在刷新
- c# - 删除所有使用的引用
- php - PHP 致命错误:找不到类 'Microsoft\BingAds\Auth\OAuthWebAuthCodeGrant'
- javascript - 获取“ngbCollapse”,因为它不是“div”的已知属性。将组件移动到子模块后出错
- asp.net-mvc - 填充 DropDownListFor:HtmlHelper 不包含“DropDownListFor”的定义
- c++ - C++接口继承不同参数方法