So synchronisieren oder führen Sie Datenrahmen mit JSON-Daten basierend auf dem Zeitstempel zusammenPython

Python-Programme
Anonymous
 So synchronisieren oder führen Sie Datenrahmen mit JSON-Daten basierend auf dem Zeitstempel zusammen

Post by Anonymous »

Es gibt viele Beispiele dafür, wie man zwei Pandas-Datenrahmen zusammenführt, aber mein Problem ist, dass ich zwei Arten von Daten habe. data1 sind CSV-Daten, die ich mit Pandas gelesen und in einen Datenrahmen umgewandelt habe, und die anderen data2 liegen im JSON-Format vor.
Hier ist ein Beispiel der JSON-Daten:

Code: Select all

[{'timestamp': 1572430625231, 'url': 'brakePressure', 'value': 10},
{'timestamp': 1572430625275, 'url': 'lateralAcceleration', 'value': 120},
{'timestamp': 1572430625290, 'url': 'longitudinalAcceleration', 'value': 110},
{'timestamp': 1572430625299, 'url': 'acceleratorPosition', 'value': 1230},
{'timestamp': 1572430625310, 'url': 'currentTorque', 'value': 10}]
Wie Sie sehen können, befindet sich jeder Merkmalswert in einem Wörterbuch mit einem Zeitstempel. Das Problem ist, wenn ich dies in einen Datenrahmen konvertiere, wären die Zeilen ein Zeitstempel, eine URL und ein Wert, aber das möchte ich nicht, ich möchte, dass meine Spalten (Features) BrakePressure, LateralAcceleration usw. sind und in jeder Spalte alle Werte stehen, die diesem Feature entsprechen und in diesem JSON enthalten sind.
Mein Ziel ist es, die beiden Datensätze basierend auf dem Zeitstempel zusammenzuführen. Das ist so schwierig, weil ich hier im JSON einen Zeitstempel habe, der jedem einzelnen Merkmalswert zugeordnet ist, im Gegensatz dazu habe ich in den CSV-Daten einen Zeitstempel, der einer Zeile entspricht (das bedeutet n Merkmalswert und nicht einen einzelnen). Ich habe so viel versucht, aber keine Chance, also dachte ich, ich könnte vielleicht nach dem nächstgelegenen Zeitstempel suchen und dann jeweils einen einzelnen Wert ersetzen. Hier ist mein Versuch:

Code: Select all

def sync_vehicle_gps_data(dataset=vehicle_data, gps_data=gps_data):
vehicle = dataset.copy()
gps = gps_data.copy()
d = {}

for json in vehicle:

timestamp, feature, val = json.values()
index = abs(gps['timestamp'] - timestamp).idxmin()
print("closest value index = ", index)
gps.at[index, feature] = val

return gps
Die Fahrzeugdaten sind die JSON-Daten und die GPS-Daten sind ein Pandas-DataFrame. Wie Sie sehen können, suche ich im gesamten Datensatz nach dem Zeitstempel, der dem Zeitstempel des einzelnen Features am nächsten kommt, und aktualisiere dann diesen spezifischen Wert, aber das hat bei mir nicht gut funktioniert. Am Ende habe ich Daten durcheinander gebracht. Gibt es eine Möglichkeit, dies in Python zu tun? Ich kann auch jede andere Bibliothek verwenden, wenn es eine gibt, sodass ich nicht auf Pandas beschränkt bin.
Die erwartete Ausgabe ist, dass ich diese Werte im JSON oben an den vorhandenen Datenrahmen anhängen kann, was in diesem Beispiel bedeutet, dass die neuen Spalten „brakePressure“, „lateralAcceleration“ usw. hinzugefügt werden und der Wert jedes Features (wie im JSON oben, ja, es sind Nullen, aber es ist nur ein Beispiel) in die Zeile eingefügt wird, in der die Der Zeitstempel dieser Zeile kommt dem Zeitstempel des Zeitstempelschlüssels jedes Features im obigen JSON am nächsten.
Hier ist ein Beispiel: Nehmen wir an, dies sind die GPS-Daten

Code: Select all

      timestamp        X      Y     Z
1572430510880  595.00  179.00 -60.00
1572430510890   -0.23   -0.09   0.01
1572430510900   -0.11   -0.02   0.04
1572430510910   -1.96   -5.19  -6.10
Ich möchte diese Ausgabe (ich zeige sie nur für eine Funktion):

Code: Select all

      timestamp        X      Y        Z    brakePressure
1572430510880  595.00  179.00 -60.00   10
1572430510890   -0.23   -0.09   0.01   nan
1572430510900   -0.11   -0.02   0.04   nan
1572430510910   -1.96   -5.19  -6.10   nan
Der Wert der Funktion „brakePressure“ im Wörterbuch wurde in die erste Zeile eingefügt, da sich der GPS-Zeitstempel, der dem Zeitstempel von „brakePressure“ im obigen Wörterbuch am nächsten kommt, ebenfalls in der ersten Zeile befindet. Im Grunde möchte ich dasselbe für alle Features im JSON tun, ich möchte alle diese Feature-Werte mit den GPS-Daten synchronisieren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post