У меня длинный кадр данных с измерениями, приходящими каждый час.В этом кадре данных я хочу вычислить значение коррекции смещения на основе нескольких значений в двух (или трех) разных строках (для каждого времени).Поэтому каждый раз я хочу извлечь значения для двух разных строк BS = (1 и 3) и использовать несколько значений в этих строках для вычисления значения смещения.
Это несколько похоже на эту проблему: применить функцию к кадру данных, включающему две строки НО, иногда у меня не все строки, поэтому у меня могут быть периоды времени, когда данные от датчика 2 отсутствуют, что означает, что я должен проверить, является ли значение BSисправить для каждой строки, я не могу просто посчитать количество строк.
import pandas as pd
df=pd.DataFrame({'time':['2015-07-04','2015-07-04','2015-07-04','2015-07-05','2015-07-05','2015-07-05'],'BS':[1,2,3,1,2,3],
'HA':[0.264095,2.4,6.157189,4.570424,2.41,4.180326],'VA':[1.623784,1.8,1.619461,1.623786,1.82,1.619468],'Distance':[19.36054,19.8,20.90246,19.36084,19.8,20.90246],
'x':[21.02,19.8,17.864,21.005,19.8,17.849],'y':[0,0,0,0,0,0],'z':[1,1,1,1,1,1]})
df.head(6)
Для каждого периода времени я хотел бы найти значение смещения HA0, где AB близко к нулю, где
A=x(BS1)+(Distance(BS1)*np.sin(VA(BS1)*np.cos(HA(BS1+HA0))
B=x(BS3)+(Distance(BS3)*np.sin(VA(BS3)*np.cos(HA(BS8+HA0))
Я хотел бы оптимизировать HA0 и добавить в каждую строку одно и то же время: примерно так:
df=pd.DataFrame({'time':['2015-07-04','2015-07-04','2015-07-04','2015-07-05','2015-07-05','2015-07-05'],'BS':[1,2,3,1,2,3],
'HA':[0.264095,2.4,6.157189,4.570424,2.41,4.180326],'VA':[1.623784,1.8,1.619461,1.623786,1.82,1.619468],'Distance':[19.36054,19.8,20.90246,19.36084,19.8,20.90246],
'x':[21.02,19.8,17.864,21.005,19.8,17.849],'y':[0,0,0,0,0,0],'z':[1,1,1,1,1,1],'HA0':[4.4486318,4.4486318,4.4486318,2.471724,2.471724,2.471724]})