पांडा टैब्यूलर डेटा संरचनाओं पर केंद्रित है और संचालन (अतिरिक्त, घटाव आदि) करते समय यह लेबल को देखता है - पदों पर नहीं।
निम्नलिखित DataFrame पर विचार करें:
df = pd.DataFrame(np.random.randn(5, 3), index=list('abcde'), columns=list('xyz'))
यहाँ, df[1:]
है:
df[1:]
Out:
x y z
b 1.003035 0.172960 1.160033
c 0.117608 -1.114294 -0.557413
d -1.312315 1.171520 -1.034012
e -0.380719 -0.422896 1.073535
और df[:-1]
है:
df[:-1]
Out:
x y z
a 1.367916 1.087607 -0.625777
b 1.003035 0.172960 1.160033
c 0.117608 -1.114294 -0.557413
d -1.312315 1.171520 -1.034012
आप df[1:]/df[:-1]
करते हैं यह पंक्ति को विभाजित करेगा b
की पंक्ति द्वारा b
, आर ow c
पंक्ति c
की पंक्ति और पंक्ति d
की पंक्ति d
है। पंक्ति a
और e
के लिए, यह अन्य DataFrame में इसी पंक्तियों (या तो एक दूसरे के पहले एक में या में) ढूँढने में सक्षम तो नहीं होगा यह nan
वापस आ जाएगी:
df[1:]/df[:-1]
Out:
x y z
a NaN NaN NaN
b 1.0 1.0 1.0
c 1.0 1.0 1.0
d 1.0 1.0 1.0
e NaN NaN NaN
तुम सिर्फ करना चाहते हैं तो लेबल्स को अनदेखा करते हुए तत्व-वार विभाजन, फ्रेम में से किसी एक के लिए .values
द्वारा अंतर्निहित numpy सरणी तक पहुंचने के लिए लेबलों को अनदेखा करने के लिए पांडा को बताने का एक तरीका है। मैं समझता हूँ कि अंतिम परिणाम एक ही हो गया होता
df[1:]/df[:-1].values
Out:
x y z
b 0.733258 0.159028 -1.853749
c 0.117252 -6.442482 -0.480515
d -11.158359 -1.051357 1.855018
e 0.290112 -0.360981 -1.038223
अब, है, लेकिन मुझे आश्चर्य है कि अगर यह अधिक औपचारिक रूप से करने के लिए सही हो गया होता: चूंकि NumPy सरणी के लेबल नहीं है, पांडा बस तत्व के लिहाज से संचालन करना होगा संख्यात्मक के लिए एक numpy सरणी का भी उपयोग करें .. – MadHatter
उस स्थिति में, पूरा ऑपरेशन numpy में होगा ताकि यह लेबल के बिना एक सरणी वापस कर देगा। ध्यान दें कि अंतिम आउटपुट में ('डीएफ [1:]/डीएफ [: - 1] .values') परिणाम डेटाफ्रेम है। तो यह आपकी जरूरतों पर आधारित होगा। – ayhan