Итак, я занимаюсь разработкой сайта Django для приложения Da sh, и после долгих исследований я застрял в этом треке с этой ключевой ошибкой. Я использую PyMon go для извлечения данных в Pandas DataFrame. Когда я запускаю код построчно в блокноте, он запускается без ошибок, но как только я пытаюсь обновить свое приложение с помощью Da sh RangeSlider, я получаю эту KeyError.
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django_plotly_dash/views.py", line 74, in update
return _update(request, ident, stateless, **kwargs)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django_plotly_dash/views.py", line 93, in _update
resp = view_func()
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django_plotly_dash/dash_wrapper.py", line 505, in dispatch
return self.dispatch_with_args(body, argMap=dict())
File "/home/xristos/anaconda3/lib/python3.7/site-packages/django_plotly_dash/dash_wrapper.py", line 565, in dispatch_with_args
res = self.callback_map[target_id]['callback'](*args, **argMap)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/dash/dash.py", line 1339, in add_context
output_value = func(*args, **kwargs) # %% callback invoked %%
File "/home/xristos/projects/2020-primary-election-tracker/tw33tyPyElections/homepage/dash_apps/finished_apps/sentiment.py", line 84, in update_figure
dates_df = can_data.set_index(can_data['date'], drop=True)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py", line 2980, in __getitem__
indexer = self.columns.get_loc(key)
File "/home/xristos/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2899, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/_libs/index.pyx", line 107, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 131, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1607, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1614, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'date'
Это основа кода, который у меня есть.
dcc.Dropdown(
id = 'candidate-options',
options = options,
value = 'Joey'
),
dcc.Graph(
id = 'sentiment-line-chart'),
dcc.RangeSlider(
id = 'date_slider',
min = unixTimeMillis(daterange.min()),
max = unixTimeMillis(daterange.max()),
allowCross = False,
updatemode ='drag',
value = [unixTimeMillis(daterange.min()), unixTimeMillis(daterange.max())],
marks = getMarks(daterange.min(), daterange.max())
)
])
@app.callback(
dash.dependencies.Output('sentiment-line-chart', 'figure'),
[dash.dependencies.Input('candidate-options', 'value'),
dash.dependencies.Input('date_slider','min'),
dash.dependencies.Input('date_slider','max')])
def update_figure(value,min,max):
can_data = pd.DataFrame([x for x in coll.find({'date':{'$gt':datetime(2020, 2, 1, 0, 0, 0),'$lt':datetime(2020, 2, 5, 0, 0, 0)},'candidate':value})])
dates_df = can_data.set_index(can_data['date'], drop=True)
dates = [pd.Timestamp(x) for x in can_data['date']]
filtered_data = dates_df[min:max].resample('H').mean()
data = dict(
x = [row['sentiment'] for i,row in filtered_data[['sentiment']].iterrows()],
y = dates
)
return {
'data': data,
'layout': dict(
xaxis={'type': 'date', 'title': 'Dates',
'range':[min, max]},
yaxis={'title': 'Sentiment', 'range': [can_data.sentiment.min(), can_data.sentiment.max()]},
hovermode='closest',
transition = {'duration': 500},
)
}```
Also, I am using django-plotly-dash to integrate the two, if that helps. Any advice is appreciated!