【发布时间】:2019-06-17 19:01:29
【问题描述】:
我正在尝试使用 2 个 ipywidgets 来控制一个数据框并刷新作为 2 个 ipywidgets 的更改。
创建一个新列 (Check_value),将 Values 列向下移动小部件 A 中的值
通过小部件 B 中的值过滤并仅显示 Check_value 大于 Value 列的行
数据框:
日期 |价值观 第一天 | 5 第 2 天 | 9 第 3 天 | 14 第 4 天 | 40 第 5 天 | 80
## Widget A
A = widgets.IntSlider(
value=1,
min=1,
max=30,
step=1)
## Widget B
B = widgets.IntSlider(
value=1,
min=1,
max=30,
step=1)
out = widgets.Output()
## Processing
def common_processing(period, filters):
out.clear_output()
with out:
df = pd.read_csv(data.csv)
df['Dates'] = pd.to_datetime(df['Dates'])
df['check_value'] = df['Value'].shift(-period)
df['delta'] = df['check_value'] - df['Value']
display(df[df['delta'] > filters])
def A_eventhandler(change):
common_processing(change.new, B.value)
def B_eventhandler(change):
common_processing(A.value, change.new)
A.observe(A_eventhandler, names='value')
B.observe(B_eventhandler, names='value')
display(A)
display(B)
显示的数据框不会随着小部件值的变化而变化。
【问题讨论】:
标签: python pandas ipywidgets