pandas 0.23 - DataFrame.stack()

pandas.DataFrame.stack




pandas

pandas.DataFrame.stack

DataFrame.stack(level=-1, dropna=True) [source]

कॉलम से इंडेक्स तक निर्धारित स्तर (ओं) को ढेर करें।

वर्तमान DataFrame की तुलना में एक या एक से अधिक नए इनर-अधिकांश स्तरों के साथ एक बहु-स्तरीय अनुक्रमणिका वाले डेटाफ़्रेम या श्रृंखला को लौटाएं। वर्तमान डेटाफ़्रेम के स्तंभों को पिवट करके नए आंतरिक-अधिकांश स्तर बनाए गए हैं:

  • यदि स्तंभों का एकल स्तर है, तो आउटपुट एक श्रृंखला है;
  • यदि कॉलम में कई स्तर हैं, तो नया इंडेक्स स्तर (s) निर्धारित स्तर (ओं) से लिया गया है और आउटपुट एक DataFrame है।

नए सूचकांक स्तरों को क्रमबद्ध किया जाता है।

पैरामीटर:

स्तर : int, str, सूची, डिफ़ॉल्ट -1

सूचकांक अक्ष पर स्तंभ अक्ष से स्टैक करने के लिए स्तर (ओं), एक सूचकांक या लेबल, या सूचकांक या लेबल की सूची के रूप में परिभाषित किया गया है।

dropna : बूल, डिफॉल्ट ट्रू

लापता मूल्यों के साथ परिणामी फ़्रेम / श्रृंखला में पंक्तियों को छोड़ना है या नहीं। इंडेक्स अक्ष पर एक कॉलम स्तर को स्टैक करना इंडेक्स और स्तंभ मानों के संयोजन बना सकता है जो मूल डेटाफ़्रेम से गायब हैं। उदाहरण अनुभाग देखें।

यह दिखाता है:

DataFrame या Series

स्टैक्ड डेटाफ़्रेम या श्रृंखला।

यह भी देखें

DataFrame.unstack
स्तंभ अक्ष पर सूचकांक अक्ष से निर्धारित स्तर (ओं) को हटा दें।
DataFrame.pivot
डेटाफ़्रेम को लंबे प्रारूप से विस्तृत प्रारूप में रीसेट करें।
DataFrame.pivot_table
एक DataFrame के रूप में एक स्प्रेडशीट शैली की धुरी तालिका बनाएँ।

टिप्पणियाँ

फ़ंक्शन को एक क्षैतिज स्थिति (डेटाफ़्रेम के स्तंभ) पर एक-दूसरे के ऊपर खड़ी (डेटाफ़्रेम की अनुक्रमणिका में) खड़ी की जा रही पुस्तकों के एक संग्रह के साथ सादृश्य द्वारा नाम दिया गया है।

उदाहरण

एकल स्तर के कॉलम

>>> df_single_level_cols = pd.DataFrame([[0, 1], [2, 3]],
...                                     index=['cat', 'dog'],
...                                     columns=['weight', 'height'])

किसी एकल स्तरीय स्तंभ अक्ष के साथ डेटाफ़्रेम स्टैकिंग करना एक श्रृंखला देता है:

>>> df_single_level_cols
     weight height
cat       0      1
dog       2      3
>>> df_single_level_cols.stack()
cat  weight    0
     height    1
dog  weight    2
     height    3
dtype: int64

मल्टी लेवल कॉलम: सिंपल केस

>>> multicol1 = pd.MultiIndex.from_tuples([('weight', 'kg'),
...                                        ('weight', 'pounds')])
>>> df_multi_level_cols1 = pd.DataFrame([[1, 2], [2, 4]],
...                                     index=['cat', 'dog'],
...                                     columns=multicol1)

एक बहु-स्तरीय स्तंभ अक्ष के साथ डेटाफ़्रेम को रोकना:

>>> df_multi_level_cols1
     weight
         kg    pounds
cat       1        2
dog       2        4
>>> df_multi_level_cols1.stack()
            weight
cat kg           1
    pounds       2
dog kg           2
    pounds       4

लापता मूल्य

>>> multicol2 = pd.MultiIndex.from_tuples([('weight', 'kg'),
...                                        ('height', 'm')])
>>> df_multi_level_cols2 = pd.DataFrame([[1.0, 2.0], [3.0, 4.0]],
...                                     index=['cat', 'dog'],
...                                     columns=multicol2)

बहु-स्तरीय स्तंभों के साथ डेटाफ़्रेम को स्टैक करते समय लापता मान होना आम है, क्योंकि स्टैक्ड डेटाफ़्रेम में आमतौर पर मूल डेटाफ़्रेम की तुलना में अधिक मान होते हैं। अनुपलब्ध मान NaNs से भरे हुए हैं:

>>> df_multi_level_cols2
    weight height
        kg      m
cat    1.0    2.0
dog    3.0    4.0
>>> df_multi_level_cols2.stack()
        height  weight
cat kg     NaN     1.0
    m      2.0     NaN
dog kg     NaN     3.0
    m      4.0     NaN

स्तर (ओं) को निर्धारित करना

पहला पैरामीटर नियंत्रित करता है कि कौन सा स्तर या स्तर स्टैक किया गया है:

>>> df_multi_level_cols2.stack(0)
             kg    m
cat height  NaN  2.0
    weight  1.0  NaN
dog height  NaN  4.0
    weight  3.0  NaN
>>> df_multi_level_cols2.stack([0, 1])
cat  height  m     2.0
     weight  kg    1.0
dog  height  m     4.0
     weight  kg    3.0
dtype: float64

लापता मूल्यों को गिराना

>>> df_multi_level_cols3 = pd.DataFrame([[None, 1.0], [2.0, 3.0]],
...                                     index=['cat', 'dog'],
...                                     columns=multicol2)

ध्यान दें कि सभी मान गायब हैं पंक्तियाँ डिफ़ॉल्ट रूप से हटा दी जाती हैं, लेकिन इस व्यवहार को ड्रॉपना कीवर्ड पैरामीटर के जरिए नियंत्रित किया जा सकता है:

>>> df_multi_level_cols3
    weight height
        kg      m
cat    NaN    1.0
dog    2.0    3.0
>>> df_multi_level_cols3.stack(dropna=False)
        height  weight
cat kg     NaN     NaN
    m      1.0     NaN
dog kg     NaN     2.0
    m      3.0     NaN
>>> df_multi_level_cols3.stack(dropna=True)
        height  weight
cat m      1.0     NaN
dog kg     NaN     2.0
    m      3.0     NaN