Ho una serie di panda in cui ogni cella è una tupla. Sto provando a fare un rolling(). Apply() su quella serie, e la funzione che sto cercando di applicare non viene mai chiamata. Ecco un esempio sciocco che mostra di cosa sto parlando:Perché il mio pandas rolling(). Apply() non funziona quando la serie contiene raccolte?
>>> 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
Un semplice apply
opere come previsto, nel senso che viene chiamata la funzione:
>>> s.apply(die)
[...]
ZeroDivisionError: integer division or modulo by zero
Ma ma un rolling().apply()
non fa niente per niente, e in particolare la funzione che dovrebbe essere applicato non viene mai chiamato:
>>> s.rolling(2).apply(die)
0 (0, 0)
1 (1, 1)
2 (2, 2)
3 (3, 3)
4 (4, 4)
dtype: object
Questo è l'esempio più semplice che dimostra di cosa sto parlando, ma la stessa cosa accade con gli elenchi &.
Perché ciò accade e come posso applicare un rolling con una funzione personalizzata su una serie di raccolte?
Credo che rolling(). Apply() ed expanding(). Apply() non siano implementati per gli oggetti. Ho fatto una domanda simile qualche ora fa http://stackoverflow.com/q/36717416/2285236 – ayhan