Пусть у меня есть панд dataframe с 16 колоннами и приблизительно 1000 строк, формат, как этосоздать новую панд dataframe, принимая значения из другого dataframe и perforing некоторых математических операций на нем
date_time sec01 sec02 sec03 sec04 sec05 sec06 sec07 sec08 sec09 sec10 sec11 sec12 sec13 sec14 sec15 sec16
1970-01-01 05:54:17 8.50 8.62 8.53 8.45 8.50 8.62 8.53 8.45 8.42 8.39 8.39 8.40 8.47 8.54 8.65 8.70
1970-01-01 05:56:55 8.43 8.62 8.55 8.45 8.43 8.62 8.55 8.45 8.42 8.39 8.39 8.40 8.46 8.53 8.65 8.71
и Теперь нужно сделать еще панд dataframe с 32 столбцами:
x_sec01 y_sec01 x_sec02 y_sec02 x_sec03 y_sec03 x_sec04 y_sec04 x_sec05 y_sec05 x_sec06 y_sec06 x_sec07 ...
где значения каждого столбца необходимо умножить с определенной математической константой, которая зависит от числа столбцов (номер сектора):
x = sec_data * (math.cos(math.radians(1.40625*(sector_number))))
y = sec_data * (math.sin(math.radians(1.40625*(sector_number))))
Таким образом, каждый из столбцов в исходной пандами dataframe (sec01-sec16) должен быть преобразован в две колонки (x_sec01, y_sec01) и фактор, по которому он должен быть умножен зависит от значения sector_number.
В настоящее время я использую эту функцию и вызываю ее для каждой строки в цикле for, которая занимает слишком много времени.
def sec_to_xy(sec_no,sec_data): #function to convert sector data to xy coordinate system
for sec_convno in range(0,32,2):
sector_number = (77-(sec_no-1)*2) #goes from 79 till 49
x = sec_data * (math.cos(math.radians(1.40625*(sector_number))))
y = sec_data * (math.sin(math.radians(1.40625*(sector_number))))
return(x,y)
я понял первую часть, но не кажется, вторая часть это будет работать я получаю это «не может индексировать этикетка с нулевым ключом» ошибки – thirteenmac
Вы имеете в виду, что стержень не работает? – IanS
да, я смотрю на это прямо сейчас, извините, я очень новичок в программировании – thirteenmac