Antwort mit KI erzeugt
Lösung des Problems
Das Problem, das du beschreibst, tritt auf, weil das Format, in dem das Datum und die Zeit in deinen Daten (
start_date_value
und
end_date_value
) vorliegen, nicht dem Format entspricht, das du beim Parsen angegeben hast. Deine Daten enthalten den Zeitstempel in einem ISO 8601-Format (
2020-01-28T11:55:55.226148
), aber du versuchst, sie mit
%Y-%m-%d
zu parsen, was nur das Datum ohne Zeit berücksichtigt. Der Fehler "unconverted data remains" tritt auf, weil nach dem Parsen des Datums noch ein Zeitstempel in deinen Daten vorhanden ist, den die Funktion nicht verarbeiten kann.
Eine Lösung besteht darin, das Datums- und Zeitformat so zu ändern, dass es das gesamte String verarbeiten kann oder einfach den Teil des Strings zu extrahieren, der dem von dir gewünschten Format entspricht. Da du jedoch nur am Datum interessiert zu sein scheinst, könntest du weiterhin nur das Datum extrahieren, musst aber sicherstellen, dass du es korrekt tust.
Im Folgenden findest du den korrigierten Code, der deine Anforderungen erfüllt:
python
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import datetime as dt
import pickle
from ..server import app
@app.callback(
Output('articles', 'children'),
[Input('button', 'n_clicks'),
Input('my-date-picker-range', 'start_date_value'),
Input('my-date-picker-range', 'end_date_value')],
[State('input-box', 'value')]
)
def update_search(n_clicks, start_date_value, end_date_value, value):
f = pickle.load(open("dashboard/data-mm/google-nlu-khazaradze.p", "rb"))
# let's filter f according to value
print(start_date_value)
# Split the string by 'T' to separate date and time, and parse the date part
start_date = dt.datetime.strptime(start_date_value.split('T')[0], '%Y-%m-%d')
end_date = dt.datetime.strptime(end_date_value.split('T')[0], '%Y-%m-%d')
Beachte, dass ich die Reihenfolge der Argumente in der Funktionsdefinition korrigiert habe, um sie der Reihenfolge der Inputs und States deiner Callback-Deklaration entsprechend anzupassen. Außerdem wurde
.split(' ')[0]
durch
.split('T')[0]
ersetzt, um den Datumsteil korrekt zu extrahieren. Dieser Ansatz verwendet das 'T', das Datum und Uhrzeit in deinem ISO-Format trennt, um sicherzustellen, dass nur das Datum berücksichtigt wird.