मुझे एक पांडा श्रृंखला मिली है जिसमें प्रत्येक सेल एक ट्यूपल है। मैं उस श्रृंखला पर एक रोलिंग() लागू() लागू करने की कोशिश कर रहा हूं, और जिस फ़ंक्शन को मैं लागू करने का प्रयास कर रहा हूं उसे कभी भी कॉल नहीं किया जा रहा है। यहां एक मूर्खतापूर्ण उदाहरण से पता चलता है कि मैं किस बारे में बात कर रहा हूँ है:श्रृंखला में संग्रह होने पर मेरे पांडा रोलिंग() लागू क्यों नहीं होते हैं?
>>> 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
यह सबसे सरल उदाहरण यह दर्शाता है कि मैं किस बारे में बात कर रहा हूँ है, लेकिन एक ही चीज सेट & सूचियों के साथ होती है।
ऐसा क्यों होता है, और मैं संग्रह की श्रृंखला पर एक कस्टम फ़ंक्शन के साथ रोलिंग कैसे लागू कर सकता हूं?
मुझे लगता है कि रोलिंग() लागू करें() और विस्तार()। लागू करें() वस्तुओं के लिए लागू नहीं किए गए हैं। मैंने कुछ घंटों पहले http://stackoverflow.com/q/36717416/2285236 पर एक समान प्रश्न पूछा – ayhan