एक टेम्पलेट DataFrame, जो एक शून्य यहाँ भरा मूल्यों के साथ कॉपी करना चाहते हैं मान लें ...
यदि आपके डेटा सेट में कोई NaN नहीं है, तो शून्य से गुणा करना काफी तेज हो सकता है:
In [19]: columns = ["col{}".format(i) for i in xrange(3000)]
In [20]: indices = xrange(2000)
In [21]: orig_df = pd.DataFrame(42.0, index=indices, columns=columns)
In [22]: %timeit d = pd.DataFrame(np.zeros_like(orig_df), index=orig_df.index, columns=orig_df.columns)
100 loops, best of 3: 12.6 ms per loop
In [23]: %timeit d = orig_df * 0.0
100 loops, best of 3: 7.17 ms per loop
सुधार DataFrame आकार पर निर्भर करता है, लेकिन यह कभी धीमा नहीं मिला।
और बस इसके लिए:
In [24]: %timeit d = orig_df * 0.0 + 1.0
100 loops, best of 3: 13.6 ms per loop
In [25]: %timeit d = pd.eval('orig_df * 0.0 + 1.0')
100 loops, best of 3: 8.36 ms per loop
परंतु:
In [24]: %timeit d = orig_df.copy()
10 loops, best of 3: 24 ms per loop
संपादित करें !!!
मान लें कि आपके पास float64 का उपयोग करके एक फ़्रेम है, यह एक विशाल मार्जिन द्वारा सबसे तेज़ होगा! यह वांछित भरण संख्या 0.0 को प्रतिस्थापित करके किसी भी मूल्य को उत्पन्न करने में सक्षम है।
In [23]: %timeit d = pd.eval('orig_df > 1.7976931348623157e+308 + 0.0')
100 loops, best of 3: 3.68 ms per loop
स्वाद के आधार पर, कोई बाह्य रूप से नैनो को परिभाषित कर सकता है, और एक सामान्य समाधान कर सकता है, भले ही विशेष फ्लोट प्रकार के बावजूद:
In [39]: nan = np.nan
In [40]: %timeit d = pd.eval('orig_df > nan + 0.0')
100 loops, best of 3: 4.39 ms per loop