У меня есть периодические данные с индексом является число с плавающей точкой, как так:Расчет пересечения (перехватывать) точки в серии или DataFrame
time = [0, 0.1, 0.21, 0.31, 0.40, 0.49, 0.51, 0.6, 0.71, 0.82, 0.93]
voltage = [1, -1, 1.1, -0.9, 1, -1, 0.9,-1.2, 0.95, -1.1, 1.11]
df = DataFrame(data=voltage, index=time, columns=['voltage'])
df.plot(marker='o')
Я хочу создать функцию cross(df, y_val, direction='rise' | 'fall' | 'cross')
, который возвращает массив (индексы) со всеми интерполированными точками , где значения напряжения равны y_val. Для «подъем» возвращаются только значения, когда наклон положителен; для 'fall' только значения с отрицательным наклоном сохраняются; для 'крест' обе возвращены. Поэтому, если y_val = 0 и direction = 'cross', тогда массив с 10 значениями будет возвращен с значениями X точек пересечения (первый из которых составляет около 0,025).
Я думал, что это можно сделать с помощью итератора, но было интересно, есть ли лучший способ сделать это.
Спасибо. Я люблю Панд и сообщество Панд.
Кстати, вы, возможно, наткнулись на ошибку в заговоре панд. Я считаю, что первое пересечение должно составлять около 0,05, исходя из данных, но метки не выстраиваются в линию, заставляя его пересечься на 0,025. (pandas 0.7.3) – Garrett