首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ipywidgets浮标表

ipywidgets浮标表
EN

Stack Overflow用户
提问于 2017-10-15 15:47:30
回答 1查看 1.5K关注 0票数 0

我试图在jupyter-记事本中使用来自FloatRangeSlideripywidgets,以便显示日期:

代码语言:javascript
运行
复制
import ipywidgets as widgets
from datetime import datetime

class myd:
    def __init__(self, value_datetime):
        self.value = value_datetime
    def __float__(self):
        return float(self.value.strftime("%s"))
    def __format__(self, format_spec):
        return self.value.strftime("%d.%m.%Y")

# Test
start = myd(datetime(2017,1,1))
end = myd(datetime(2017,10,1))
print(float(start), "{:.1f}".format(start))
print(float(end), "{:.1f}".format(end))

正确地打印

代码语言:javascript
运行
复制
1483225200.0 01.01.2017
1506808800.0 01.10.2017

但是,滑块并没有按假定的方式显示:

代码语言:javascript
运行
复制
widgets.FloatRangeSlider(
    value=[start, end],
    min=start,
    max=end,
    step=100,
    description='Test:',
    disabled=False,
    continuous_update=False,
    orientation='horizontal',
    readout=True,
    readout_format='.1f',
)

它显示

但应该显示01.01.2017 - 01.10.2017

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 17:01:13

使用FloatRangeSlider是胡说八道,最好用SelectionRangeSlider来表示DataFrame df

代码语言:javascript
运行
复制
import ipywidgets as widgets

# create slider
dates = list(pd.date_range(df.zeit.min(), df.zeit.max(), freq='D'))
options = [(i.strftime('%d.%m.%Y'), i) for i in dates]
index = (0, len(dates)-1)
myslider = widgets.SelectionRangeSlider(
    options = options,
    index = index,
    description = 'Test',
    orientation = 'horizontal',
    layout={'width': '500px'}
)

def update_source(df, start, end):
    x = df[(df.zeit >= start) & (df.zeit < end)]
    #data = pd.DataFrame(x.groupby('who')['bytes'].sum())
    #data.sort_values(by="bytes", inplace=True)
    #data.reset_index(inplace=True)
    #return data
    return x

def gui(model, bars):
    def myupdate(control1):
        start = control1[0].date()
        end = control1[1].date()
        #display(update_source(model, start, end).head(4))
        data = update_source(model, start, end)
    return myupdate

widgets.interactive(gui(df, x), control1 = myslider)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46756911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档