Существует набор данных датчика, и значения в столбце значений необходимо скорректировать на основе одного конкретного датчика R в данных.Значения указываются в градусах (круг 360 градусов).Метод корректировки приведен ниже по формуле: для каждого отдельного датчика i рассчитайте сумму разностей синус / косинус относительно эталонного датчика и получите скорректированные градусы, рассчитав artanh.Тогда минус это от первоначальных значений.Vi (т) является значение датчика в момент времени я т и ВР (т) является значение опорного датчика R в момент времени т.
date sensor value tag
0 2000-01-01 1 200 a
1 2000-01-02 1 200 a
''''''''''''''''''''''''''''''''
7 2000-01-08 1 300 b
8 2000-01-02 2 202 c
9 2000-01-03 2 204 c
10 2000-01-04 2 206 c
Я пробовал несколько, но немного запутался, как выполнить этот запрос в цикле for.
- Метки времени для датчиков не совпадают.Отдельный датчик может иметь больше или меньше временных отметок, чем эталонный датчик.
- Я хочу добавить дополнительный столбец для хранения исправленных значений.
Ниже приведен пример набора данных Iсделал.Если выбрать датчик 2 в качестве эталонного датчика для коррекции других значений датчика, как я могу выполнить его в цикле питона?Заранее спасибо!
import pandas as pd
sensor1 = pd.DataFrame({"date": pd.date_range('1/1/2000', periods=8),"sensor":[1,1,1,1,1,1,1,1],"value":[200,200,200,200,200,300,300,300],"tag":pd.Series(['a','b']).repeat(4)})
sensor2 = pd.DataFrame({"date": pd.date_range('1/2/2000', periods=10),"sensor":[2,2,2,2,2,2,2,2,2,2],"value":[202,204,206,208,220,250,300,320,280,260],"tag":pd.Series(['c','d']).repeat(5)})
sensor3 = pd.DataFrame({"date": pd.date_range('1/3/2000', periods=10),"sensor":[3,3,3,3,3,3,3,3,3,3],"value":[265,222,232,220,260,300,250,200,190,223],"tag":pd.Series(['e','f']).repeat(5)})
sensor4 = pd.DataFrame({"date": pd.date_range('1/1/2000', periods=11),"sensor":[4,4,4,4,4,4,4,4,4,4,4],"value":[206,203,210,253,237,282,320,232,255,225,262],"tag":pd.Series(['c']).repeat(11)})
sensordata = sensor1.append([sensor2,sensor3,sensor4]).reset_index(drop = True)