Мне нужна помощь по исправлению получаемой ошибки.
У меня есть следующий фрейм данных:
x = [-0.75853, -0.75853, -0.75853, -0.75852]
y = [-0.63435, -0.63434, -0.63435, -0.63436]
z = [-0.10488, -0.10490, -0.10492, -0.10495]
w = [-0.10597, -0.10597, -0.10597, -0.10596]
df = pd.DataFrame([x, y, z, w], columns=['x', 'y', 'z', 'w'])
Я создал следующие функции:
import math
def roll(qw, qx, qy, qz):
# x-axis rotation
sinr_cosp = +2.0 * (qw * qx + qy + qz)
cosr_cosp = +1.0 - 2.0 * (qx * qx + qy * qy)
roll = math.atan2(sinr_cosp, cosr_cosp)
return roll
def pitch(qw, qx, qy, qz):
# y-axis rotation
sinp = +2.0 * (qw * qy - qz * qx)
if(math.fabs(sinp) >= 1):
pitch = copysign(M_PI/2, sinp)
else:
pitch = math.asin(sinp)
return sinp
def yaw(qw, qx, qy, qz):
# z-axis rotation
siny_cosp = +2.0 * (qw * qz + qx * qy)
cosy_cosp = +1.0 - 2.0 * (qy * qy + qz * qz)
yaw = math.atan2(siny_cosp, cosy_cosp)
return yaw
НаконецИспользуя функцию применения Pandas, я попытался связать результат с новым столбцом:
q_w = df['w']
q_x = df['x']
q_y = df['y']
q_z = df['z']
df['row'] = df.apply(roll(q_w, q_x, q_y, q_z))
Та же ошибка возникает при использовании других функций.
Я обнаружил проблему прямо здесь, в стекегде эта ошибка была исправлена с помощью Numpy.Я считаю, что это здесь невозможно, потому что я использую функции, специфичные для пакета Math.
TypeError Traceback (последний вызов был последним) /usr/local/lib/python3.6/dist-packages/pandas / core / series.py в оболочке (self) 92 поднять TypeError ("не может преобразовать серию в формат" ---> 93 "{0}". str (преобразователь)) 94
TypeError: невозможно преобразовать серию в
. Вышеуказанное исключение было прямой причиной следующего исключения:
SystemError Traceback (последний вызов последнего) 4 кадра в () ----> 1 df['row'] = df.apply (roll (q_w, q_x, q_y, q_z))
в рулоне (qw, qx, qy, qz) 4 sinr_cosp = +2.0 * (qw * qx + qy+ qz) 5 cosr_cosp = +1.0 - 2.0 * (qx * qx + qy * qy) ----> 6 roll = math.atan2 (sinr_cosp, cosr_cosp) 7 возвратный бросок 8
/ usr / local/lib/python3.6/dist-packages/pandas/core/series.py in wrapper (self) 88 89 def wrapper (self): ---> 90 if len (self) == 1: 91 возвратный преобразователь (self).iloc [0]) 92 повысить TypeError ("не может преобразовать сериюes для "
/ usr / local / lib / python3.6 / dist-packages / pandas / core / series.py в len (self) 593 Возвращает длину серии.594 "" "-> 595 return len (self._data) 596 597 def view (self, dtype = None):
/ usr / local / lib / python3.6 / dist-packages / pandas /core / internals / Manager.py в len (self) 290 291 def len (self): -> 292 return len (self.items) 293 294 def unicode (self):
SystemError: PyEval_EvalFrameEx вернул результат с установленной ошибкой