Вот пример данных json:
Код: Выделить всё
[{'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}]
Моя цель — объединить два набора данных на основе временной метки. это так сложно, потому что здесь в JSON у меня есть метка времени, связанная с каждым значением функции, напротив, в данных CSV у меня есть метка времени, которая соответствует строке (это означает n значений функции, а не одно). Я так старался это сделать, но без шансов, поэтому подумал, может быть, мне удастся найти ближайшую временную метку, а затем заменить по одному значению за раз. Вот моя попытка:
Код: Выделить всё
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
Ожидаемый результат заключается в том, что я могу добавить эти значения в json выше к существующему фрейму данных, что означает, что в этом примере будут добавлены новые столбцы «brakePressure», «LaterAcceleration» и т. д.. и значение каждой функции (как и в JSON выше, да, они нули, но это только пример) будет помещено в строку, где временная метка этой строки является ближайшей к временной метке ключа временной метки каждой функции в JSON выше.
Вот пример: скажем, это данные GPS
Код: Выделить всё
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
Код: Выделить всё
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
Подробнее здесь: https://stackoverflow.com/questions/587 ... -timestamp
Мобильная версия