Jupyter Notebook 如何为日期选择器分配默认值并对所选日期内的时间进行排序?

Man*_* Yu 1 datepicker python-3.x jupyter-notebook

我可以尝试设置日期选择器中时间选择器内的某些数据的条件。我有两个问题

我的代码是

def show_filter_date(start ,end):
        print(start_dater.value)
    print(end_dater.value)
    time_df = (id_one[(id_one['_source.timestampstring']>pd.to_datetime(start))&(id_one['_source.timestampstring']<pd.to_datetime(end))])
    #print(time_df.head(20))
#    time_df = (id_one[(id_one['_source.timestampstring']>pd.to_datetime(start_dater.value))&(id_one['_source.timestampstring']<pd.to_datetime(end_dater.value))])
    time_df.head(20)
    
layout = widgets.Layout(width='auto', height='40px')
start_dater = widgets.DatePicker(description='Pick a Start Date',disabled=False)
end_dater = widgets.DatePicker(description='Pick an End Date',disabled=False )
#display(widgets.HBox((start_dater, end_dater)))
#display(start_dater)
#display(end_dater)
#id_one.head()
#combine_date = widgets.HBox((start = start_dater, end = end_dater))
#country_selector =  widgets.Dropdown(
interact(show_filter_date,start = start_dater , end = end_dater)
Run Code Online (Sandbox Code Playgroud)
  1. 每次我运行代码时都会显示错误“dtype=datetime64[ns] 和 NoneType 之间的比较无效”

我尝试分配默认值,例如

start_dater = widgets.DatePicker(description='Pick a Start Date',disabled=False, year = 2020 ,month = 12, day = 1)
Run Code Online (Sandbox Code Playgroud)

但它不会改变为2020/12/01

那么,如何获取除 null 之外的值呢?

  1. 我无法与日期选择器交互,其中

A) print(time_df.head(20))

二)

time_df = (id_one[(id_one['_source.timestampstring']>pd.to_datetime(start_dater.value))&(id_one['_source.timestampstring']<pd.to_datetime(end_dater.value))])

time_df.head(20)
Run Code Online (Sandbox Code Playgroud)

当我选择一天时,只有(A)可以“交互”或“刷新”,但不能(B)

对于问题 2,当我将 time_df.head(20) 放入下一个单元格时,它确实有效......

但我想要的是显示结果,如 time_df

如果有任何帮助,我将不胜感激

id_one这样的


Index           _source.hdrrId  _source.hdrfId  _source.hdrType  \
199            1300                1234                     1  

_source.timestampstring   
199 2020-11-06 09:36:04.800
Run Code Online (Sandbox Code Playgroud)

谢谢!

杰夫

Z L*_* Li 5

我复制了你的第一个错误

id_one = pd.DataFrame(pd.date_range('20200101','20200202'), columns = ['_source.timestampstring'])
Run Code Online (Sandbox Code Playgroud)

这是因为您没有为 DatePicker 设置默认值。默认情况下该值为 None,因此会出现错误。这是修复方法(值参数是默认值):

start_dater = widgets.DatePicker(description='Pick a Start Date',disabled=False, value = datetime.date(2020,1,1))
end_dater = widgets.DatePicker(description='Pick an End Date',disabled=False, value = datetime.date(2020,2,1))
Run Code Online (Sandbox Code Playgroud)

我无法复制你的第二个错误。我的猜测是你把 print 放在声明之前time_df =。您需要将打印放在计算行之后time_df