AGE               21        23       25 Grand Total
GENDER
F                NaN   87988.0  53532.0      141520
Grand Total  34323.0  141441.0  76986.0      252750
M            34323.0   53453.0  23454.0      111230

मैं चाहता हूं कि ग्रैंड टोटल अंत में छपा हो। मैं यह कैसे कर सकता हूं?

1
Aditya Koshta 29 जुलाई 2019, 15:28

1 उत्तर

सबसे बढ़िया उत्तर

मैं चाहता हूं कि ग्रैंड टोटल अंत में छपा हो।

यदि आपने पिवट तालिका बनाई होती तो योग अंत में दिखाई देगा

pd.pivot_table(df, values=…, index=['GENDER'], columns=['AGE'],
               aggfunc=np.sum, margins=True, margins_name='Grand Total')

तो, ऊपर दी गई तालिका के अपने निर्माण को अनुकूलित करने पर विचार करें। अन्यथा, जैसा कि ब्रेनथो ने पूछा था, आपको वास्तव में डेटा और कोड साझा करना होगा जो आपको इस बिंदु तक ले गए

पंक्तियाँ लिंग और आयु के स्तंभ के अवरोही क्रम में होनी चाहिए।
ऐसा करने से लिंग और आयु आरोही क्रम में होंगे। मैं उन्हें अवरोही क्रम में चाहता हूं। अगर मैं सॉर्टिंग लागू करता हूं तो ग्रैंड टोटल भी सॉर्ट हो जाता है, लेकिन मैं ग्रैंड टोटल को सॉर्ट नहीं करना चाहता।

चूंकि पंक्तियों और स्तंभों को पहले से ही आरोही क्रम में क्रमबद्ध किया गया है, इसलिए हम स्लाइसिंग और रीइंडेक्सिंग को मिलाकर (उलट) करके केवल उन्हें (कुल योग को छोड़कर) उलट कर सकते हैं। मान लेते हैं कि उपरोक्त डेटाफ़्रेम मान को वेरिएबल t को असाइन किया गया है। साथ

r = t.index[-2::-1].tolist()+t.index[-1:].tolist()

हमें वांछित पंक्ति अनुक्रमणिका मिलती है ['M', 'F', 'Grand Total']; और साथ

c = t.columns[-2::-1].tolist()+t.columns[-1:].tolist()

हमें वांछित कॉलम इंडेक्स [25, 23, 21, 'Grand Total'] मिलते हैं। इनके साथ, हम बस कर सकते हैं

t.reindex(r, c)

और पाओ

AGE               25        23       21  Grand Total
GENDER
M            23454.0   53453.0  34323.0     111230.0
F            53532.0   87988.0      NaN     141520.0
Grand Total  76986.0  141441.0  34323.0     252750.0
0
Armali 31 जुलाई 2019, 11:08