У меня есть серия панд, в которой каждая ячейка является кортежем. Я пытаюсь сделать roll(). Apply() в этой серии, и функция, которую я пытаюсь применить, никогда не вызывается. Вот простой пример, который показывает, что я говорю о:Почему мои панды катятся(). Apply() работают, когда серия содержит коллекции?
>>> import pandas as pd
>>> pd.__version__
u'0.18.0'
>>> die = lambda x: 0/0
>>> s = pd.Series(zip(range(5), range(5)))
>>> s
0 (0, 0)
1 (1, 1)
2 (2, 2)
3 (3, 3)
4 (4, 4)
dtype: object
Простой apply
работает, как и ожидалось, в том, что функция называется:
>>> s.apply(die)
[...]
ZeroDivisionError: integer division or modulo by zero
Но но rolling().apply()
не делает ничего, и, в частности, функция, которая, как предполагается, не будет применяться не вызывается:
>>> s.rolling(2).apply(die)
0 (0, 0)
1 (1, 1)
2 (2, 2)
3 (3, 3)
4 (4, 4)
dtype: object
Это самый простой пример, который показывает, что я говорю о том, но то же самое происходит с наборами & списков.
Почему это происходит, и как я могу выполнить кастинг с пользовательской функцией в серии коллекций?
Я верю, что roll(). Apply() и expand(). Apply() не реализованы для объектов. Я задал аналогичный вопрос несколько часов назад http://stackoverflow.com/q/36717416/2285236 – ayhan