Ich habe eine nicht regulirased Daten in einem Intervall von einer Minute wie folgt aus:Pandas - Resampling 1 Minuten-Intervall von nicht regula Daten in einem 3-Stunden-Intervall und Austauschen von Daten mit Daten in einer Reihe von Zeit fehlt
Date Vel Dir
14-11-2001 17:55:00 14.1 35
14-11-2001 17:56:00 10.4 52
14-11-2001 17:57:00 14.8 19
14-11-2001 18:04:00 11.4 54
14-11-2001 18:05:00 7.6 13
Ich möchte diese Daten für ein Intervall von 3 Stunden (0,3,6,9,12,15,18,21) so aufzeichnen, dass, wenn zum Beispiel die Daten zu der Stunde 18 und der Minute 00 fehlen, Ich ersetze es durch die nächsten Daten in einem Bereich von fünf Minuten nach oder vor der 00 Minute. In diesem Beispiel habe ich die Zeit von 17 57 ist näher an 18 00 als 18 04, damit ich die Daten für die fehlende Zeit 18 00 mit den Daten von 17 57 wie folgt ersetzt:
14-11-2001 15:00:00 5.8 43
14-11-2001 18:00:00 14.8 19
14-11-2001 21:00:00 17.4 68
Wenn ich nicht tun haben Daten im Intervall von fünf Minuten nach oder vor den 00 Minuten nicht abschließen ich die Stunde mit NaN wie diese verlassen die fehlenden Daten:
14-11-2001 15:00:00 5.8 43
14-11-2001 18:00:00 NaN NaN
14-11-2001 21:00:00 17.4 68
ich mit dem .resample, dies zu tun ("3H versuchen ') Befehl von Pandas, aber ich weiß nicht, wie es die fehlenden Werte mit den nächsten Daten in einem Bereich von fünf Minuten ersetzt.
Ich versuchte mit der np.searchshorted, aber ich war nicht in der Lage, den Bereich von fünf Minuten damit zu etablieren, so dass ich die Idee fallen lassen.
Mein Code ist jetzt sehr einfach, ich lese gerade eine Textdatei mit den Daten und resample es in einem 3-Stunden-Intervall, ohne die Daten zu ersetzen, damit meine Daten so aussehen, wenn ich es für i extrahiere Textdatei:
Date Vel Dir
14-11-2001 15:00:00 5.8 43
14-11-2001 18:00:00
14-11-2001 21:00:00 17.4 68
Der Code ist:
import numpy as np
import pandas as pd
dateparse = lambda x: pd.datetime.strptime(x,'%d %m %Y %H %M')
vento= pd.read_csv('vento.txt',header=0, delim_whitespace= True, parse_dates = [['Dia', 'Mes', 'Ano', 'Hora','Minuto']], index_col = 0, date_parser = dateparse)
vento_2=vento.resample('3H')
vento_2.to_csv(r'data.txt',index=True, index_label=None, sep='\t')