pandas 0.23 - DataFrame.reindex()

pandas.DataFrame.reindex




pandas

pandas.DataFrame.reindex

DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None) [source]

पिछले भरने में कोई मूल्य नहीं होने वाले स्थानों में NA / NaN रखने, वैकल्पिक भरने तर्क के साथ नए सूचकांक में DataFrame का निर्माण करें। एक नई वस्तु तब तक उत्पन्न होती है जब तक कि नया सूचकांक वर्तमान के बराबर और कॉपी = गलत न हो

पैरामीटर:

लेबल : सरणी-जैसा, वैकल्पिक

'अक्ष' द्वारा निर्दिष्ट अक्ष के अनुरूप नए लेबल / सूचकांक।

सूचकांक, कॉलम : सरणी-जैसा, वैकल्पिक (कीवर्ड का उपयोग करके निर्दिष्ट किया जाना चाहिए)

के अनुरूप नए लेबल / सूचकांक। अधिमानतः डेटा को डुप्लिकेट करने से बचने के लिए एक अनुक्रमणिका ऑब्जेक्ट

अक्ष : int या str, वैकल्पिक

लक्ष्य को अक्ष। या तो अक्ष नाम ('सूचकांक', 'कॉलम') या संख्या (0, 1) हो सकता है।

विधि : {कोई नहीं, f बैकफिल ’/ 'bfill’, / pad ’/ ill ffill’, optional निकटतम ’}, वैकल्पिक

डेटा रीफ़्रेश किए गए DataFrame में छेद भरने के लिए उपयोग करने की विधि। कृपया ध्यान दें: यह केवल डेटाफ़्रेम / श्रृंखला पर एक मोनोटोनिक रूप से बढ़ते / घटते सूचकांक के साथ लागू होता है।

  • डिफ़ॉल्ट: अंतराल को न भरें
  • पैड / ffill: अंतिम वैध अवलोकन को अगले वैध के लिए आगे प्रचारित करें
  • बैकफिल / bfill: अंतराल को भरने के लिए अगले वैध अवलोकन का उपयोग करें
  • निकटतम: अंतराल को भरने के लिए निकटतम वैध टिप्पणियों का उपयोग करें

कॉपी : बूलियन, डिफ़ॉल्ट सही

एक नई वस्तु लौटाएं, भले ही उत्तीर्ण सूचकांक समान हों

स्तर : इंट या नाम

एक स्तर पर प्रसारण, पास किए गए MultiIndex स्तर पर सूचकांक मूल्यों का मिलान

fill_value : स्केलर, डिफ़ॉल्ट np.NaN

लापता मान के लिए उपयोग करने के लिए मूल्य। NaN के लिए चूक, लेकिन कोई भी "संगत" मूल्य हो सकता है

सीमा : int, डिफ़ॉल्ट कोई नहीं

आगे या पीछे भरने के लिए निरंतर तत्वों की अधिकतम संख्या

सहिष्णुता : वैकल्पिक

अनुभवहीन मैचों के लिए मूल और नए लेबल के बीच अधिकतम दूरी। मिलान स्थानों पर सूचकांक के मूल्य समीकरण abs(index[indexer] - target) <= tolerance संतुष्ट करते हैं।

सहिष्णुता एक अदिश मान हो सकता है, जो सभी मानों या सूची-समान के लिए समान सहिष्णुता लागू करता है, जो प्रति तत्व चर सहिष्णुता को लागू करता है। सूची की तरह सूची, टपल, सरणी, श्रृंखला शामिल है, और सूचकांक के समान आकार होना चाहिए और इसका dtype सूचकांक के प्रकार से बिल्कुल मेल खाना चाहिए।

संस्करण 0.21.0 में नया: (सूची की तरह सहिष्णुता)

यह दिखाता है:
reindexed : DataFrame

उदाहरण

DataFrame.reindex दो कॉलिंग सम्मेलनों का समर्थन करता है

  • (index=index_labels, columns=column_labels, ...)
  • (labels, axis={'index', 'columns'}, ...)

हम आपके इरादे को स्पष्ट करने के लिए कीवर्ड तर्कों का उपयोग करने की सलाह देते हैं।

कुछ काल्पनिक डेटा के साथ एक डेटाफ्रेम बनाएं।

>>> index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
>>> df = pd.DataFrame({
...      'http_status': [200,200,404,404,301],
...      'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
...       index=index)
>>> df
           http_status  response_time
Firefox            200           0.04
Chrome             200           0.02
Safari             404           0.07
IE10               404           0.08
Konqueror          301           1.00

एक नया सूचकांक बनाएं और डेटाफ़्रेम को फिर से जोड़ें। नए सूचकांक में डिफ़ॉल्ट मानों के पास जो डेटाफ़्रेम में संबंधित रिकॉर्ड नहीं है उन्हें NaN असाइन किया गया है।

>>> new_index= ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
...             'Chrome']
>>> df.reindex(new_index)
               http_status  response_time
Safari               404.0           0.07
Iceweasel              NaN            NaN
Comodo Dragon          NaN            NaN
IE10                 404.0           0.08
Chrome               200.0           0.02

हम कीवर्ड fill_value मान को पास करके लापता मानों को भर सकते हैं। क्योंकि अनुक्रमणिका नीरस रूप से बढ़ती या घटती नहीं है, हम NaN मानों को भरने के लिए खोजशब्द method तर्कों का उपयोग नहीं कर सकते हैं।

>>> df.reindex(new_index, fill_value=0)
               http_status  response_time
Safari                 404           0.07
Iceweasel                0           0.00
Comodo Dragon            0           0.00
IE10                   404           0.08
Chrome                 200           0.02
>>> df.reindex(new_index, fill_value='missing')
              http_status response_time
Safari                404          0.07
Iceweasel         missing       missing
Comodo Dragon     missing       missing
IE10                  404          0.08
Chrome                200          0.02

हम कॉलम को फिर से जोड़ भी सकते हैं।

>>> df.reindex(columns=['http_status', 'user_agent'])
           http_status  user_agent
Firefox            200         NaN
Chrome             200         NaN
Safari             404         NaN
IE10               404         NaN
Konqueror          301         NaN

या हम "अक्ष-शैली" कीवर्ड तर्क का उपयोग कर सकते हैं

>>> df.reindex(['http_status', 'user_agent'], axis="columns")
           http_status  user_agent
Firefox            200         NaN
Chrome             200         NaN
Safari             404         NaN
IE10               404         NaN
Konqueror          301         NaN

reindex में भरने की कार्यक्षमता को और अधिक स्पष्ट करने के लिए, हम एक मोनोटोनॉली बढ़ते सूचकांक (उदाहरण के लिए, तारीखों का एक क्रम) के साथ एक डेटाफ्रेम बनाएंगे।

>>> date_index = pd.date_range('1/1/2010', periods=6, freq='D')
>>> df2 = pd.DataFrame({"prices": [100, 101, np.nan, 100, 89, 88]},
...                    index=date_index)
>>> df2
            prices
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88

मान लीजिए कि हम एक विस्तृत तिथि सीमा को कवर करने के लिए डेटाफ्रेम का विस्तार करने का निर्णय लेते हैं।

>>> date_index2 = pd.date_range('12/29/2009', periods=10, freq='D')
>>> df2.reindex(date_index2)
            prices
2009-12-29     NaN
2009-12-30     NaN
2009-12-31     NaN
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88
2010-01-07     NaN

अनुक्रमणिका प्रविष्टियों का मूल डेटा फ़्रेम में कोई मान नहीं था (उदाहरण के लिए, '2009-12-29') डिफ़ॉल्ट रूप से NaN से भरा हुआ है। यदि वांछित है, तो हम कई विकल्पों में से एक का उपयोग करके लापता मूल्यों को भर सकते हैं।

उदाहरण के लिए, NaN मानों को भरने के लिए अंतिम वैध मान को bfill करने के लिए, method कीवर्ड के तर्क के रूप में bfill पास करें।

>>> df2.reindex(date_index2, method='bfill')
            prices
2009-12-29     100
2009-12-30     100
2009-12-31     100
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88
2010-01-07     NaN

कृपया ध्यान दें कि मूल डेटाफ्रेम (सूचकांक मूल्य 2010-01-03 में) में मौजूद NaN मूल्य किसी भी मूल्य प्रसार योजनाओं से नहीं भरा जाएगा। ऐसा इसलिए है क्योंकि रेनडेक्सिंग करते समय डेटाफ़्रेम मानों पर ध्यान नहीं दिया जाता है, लेकिन केवल मूल और वांछित अनुक्रमितों की तुलना की जाती है। यदि आप मूल fillna() में मौजूद NaN मानों को भरना चाहते हैं, तो fillna() विधि का उपयोग करें।

अधिक के लिए उपयोगकर्ता गाइड देखें।