Применение .rolling к фрейму данных pandas с объектами - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть два кадра данных панд с одним столбцом каждый.Один имеет плавающие значения в качестве записей:

a=pandas.DataFrame([[2],[5],[7]])

вист, другой состоит из кортежей значений, таких как:

b=pandas.DataFrame([[(1,2)],[(4,5)],[(6,7)]])

Я хочу использовать скользящее применение для выполнения операции надэти элементы.Чтобы все было предельно просто, представьте, что я хочу выполнить операцию идентификации.Поэтому в этом случае я просто копирую элементы (реальный код будет вычислять различия между координатами (кортежи)).

a.rolling(1).apply(lambda x:x) работает для отдельных значений.Но выполнение b.rolling(1).apply(lambda x:x) для кортежей приводит к следующей ошибке:

TypeError: cannot handle this type -> object

Кажется очень странным, что любой из этих методов на самом деле зависит от типа объектов, хранящихся в кадре данных.

Что я здесь не так делаю?

Редактировать: Мне нужно передать 2 последовательных кортежа в качестве аргумента другой функции (для вычисления расстояний).Поэтому мне действительно нужен доступ к кортежам, а не только к их значениям.

1 Ответ

0 голосов
/ 03 декабря 2018

как-то так поможет -

b[0].apply(pd.Series).rolling(2).apply(lambda x: x[1]-x[0]).apply(tuple, axis=1)

Вывод

0    (nan, nan)
1    (3.0, 3.0)
2    (2.0, 2.0)
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...