मेरे पास एक आयताकार है (वर्ग के रूप में नहीं माना जा सकता है) संख्याओं के पांडस डेटाफ्रेम। मान लें कि मैं एक विकर्ण दिशा (या तो "ऊपरी बाएं से दाएं" या "ऊपरी दाएं कोने के लिए") चुनें। मैं एक श्रृंखला की गणना करना चाहता हूं, जिनकी प्रविष्टियां मूल डेटाफ्रेम से समानांतर विकर्णों के चुने हुए सेट के मूल्यों की रकम हैं। लक्ष्य को पूरी तरह से निर्दिष्ट करने के लिए, आपको यह तय करने की आवश्यकता है कि क्या विकर्ण बाईं ओर "एंकर" हैं या दाईं ओर "एंकर" हैं। नीचे के लिए, मुझे लगता है कि वे बाईं ओर "लंगर" हैं।Numpy/Pandas में सभी समानांतर विकर्णों के योग उत्पन्न करने का सीधा तरीका?
मैं बहुत अधिक परेशानी के बिना यह कर सकते हैं:
import numpy as np
import pandas as pd
rectdf = pd.DataFrame(np.arange(15).reshape(5,3))
# result:
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
4 12 13 14
मैं इस प्रकार है "upperleft lowerright को" विकर्ण रकम की गणना कर सकते हैं:
ullrsums = pd.concat([rectdf.iloc[:, i].shift(-i) for i in range(rectdf.shape[1])], axis=1)\
.sum(axis=1, fillna=0)
# result:
0 12
1 21
2 30
3 22
4 12
और मैं गणना कर सकता है "upperright lowerleft को "पिछले में shift(i)
करने के लिए shift(-i)
flipping द्वारा विकर्ण रकम:
urllsums = pd.concat([rectdf.iloc[:, i].shift(i) for i in range(rectdf.shape[1])], axis=1)\
.sum(axis=1, fillna=0)
# result:
0 0
1 4
2 12
3 21
4 30
ये परिणाम सभी सही हैं (यानी। यह कोड जो मैं चाहता हूं)। क्या पांडस या नम्पी में इन रकमों की गणना करने का कोई और सीधा तरीका है?
संबंधित: http://stackoverflow.com/q/10792897 और http://stackoverflow.com/q/28917414 –