2014-12-31 13 views
5

हाय लोगों मैं सभी एसओ को देखेगा और गूगल और नहीं कर सकते इसी तरह कुछ भी है ...पांडा: dataframes

मैं एक dataframe एक्स (अनिवार्य रूप से एक पंक्ति और 300 स्तंभों से मिलकर) वाले अनेक शर्तों के साथ np.where और एक ही आकार के साथ एक और डेटाफ्रेम वाई लेकिन अलग डेटा। मैं एक्स को संशोधित करना चाहता हूं कि यह 0 है यदि यह वाई के लिए एक अलग संकेत है और एक्स स्वयं 0 नहीं है, और इसे छोड़ दें। इसलिए इसे कई स्थितियों के साथ np.where के उपयोग की आवश्यकता है। हालांकि कई हालत उदाहरणों में मैंने सभी उपयोग स्केलर्स को देखा है, और जब मैं एक ही वाक्यविन्यास का उपयोग करता हूं तो यह काम नहीं करता है (सेटिंग समाप्त होता है- सबकुछ- शून्य तक, कोई त्रुटि नहीं)। मैं कहीं भी या अन्य छिपाए गए असाइन-इन-रेफरेंस मुद्दों के बारे में चिंतित हूं (वाई स्थानांतरण के बाद एक्स है लेकिन जहां तक ​​मैं कह सकता हूं कि इस कोड के ऊपर कोई अपस्ट्रीम समस्या नहीं है) कोई विचार?

कोड मैं डिबग करने के लिए कोशिश कर रहा हूँ है:

tradesmade[i:i+1] = np.where((sign(x) != sign(y)) & (sign(x) != 0), 0, x) 

जो सिर्फ शून्य का एक समूह देता है। मैंने

tradesmade[i:i+1][(sign(x) != sign(y)) * (sign(x) != 0)] = 0 

पर भी प्रयास किया है लेकिन यह ऐसा काम प्रतीत नहीं होता है। मैं इस पर घंटों तक रहा हूं और कुल नुकसान पर हूं। कृपया सहायता कीजिए!

+2

आप एक श्रृंखला के बजाय एक पंक्ति, 300-कॉलम डेटाफ्रेम का उपयोग क्यों कर रहे हैं? – BrenBarn

+0

हां हां मुझे उस प्रश्न का अनुमान लगाया जाना चाहिए। मैं वास्तव में उस डेटाफ्रेम की 3000 पंक्तियों के माध्यम से पुनरावृत्ति कर रहा हूं, हालांकि प्रत्येक गणना पूर्व पंक्तियों के परिणामों पर निर्भर करती है, इसलिए एक समय में एक पंक्ति जाना है। मैं वेक्टरिंग के महत्व और गति के बारे में जानता हूं लेकिन उस पर उत्तर प्राप्त करने से प्राथमिकता प्राप्त करता हूं (जो मुझे भी असफल लगता है ...) – swyx

+0

खंड 'चिह्न (x)! = 0' अनावश्यक है। – acushner

उत्तर

11

यह मेरे लिए स्पष्ट नहीं है आप बिल्कुल क्या करना चाहते हैं क्या है जब एक y तत्व शून्य के बराबर है ... वैसे भी इस जवाब में प्रमुख मुद्दा "np.logical_{and,not,or,xor} कार्यों का उपयोग" है।

मुझे लगता है कि निम्न की, हालांकि उन्होंने अपने उदाहरण से अलग ढंग से तैयार की, आप क्या चाहते हैं, लेकिन अगर मैं गलत हूँ आप को प्राप्त करने के आप क्या चाहते हैं विभिन्न परीक्षणों गठबंधन करने के लिए सक्षम होना चाहिए होता है,

x = np.where(np.logical_or(x*y>0, y==0), x, 0) 
+1

मेरे उत्तर की पूर्ण महानता को पहचानने में आपको थोड़ी देर लग गई लेकिन आखिर में आपने इसे स्वीकार कर लिया! ... गंभीरता से: वापस जाने के लिए अपना समय लेने के लिए धन्यवाद और मेरा जवाब इस पर टिकटें ... – gboffi

+0

हाहा मैं फिर से बहुत सक्रिय एसओ उपयोगकर्ता नहीं था। चूंकि मैंने आपकी टिप्पणी के जवाब में इसे फिर से किया था। मुझे आश्चर्य है कि हम इसे कितनी देर तक रख सकते हैं – swyx

4

@gboffi द्वारा पोस्ट की तरह, लेकिन मेरी समझ कोशिश के अनुसार अपने मूल अनुरोध के लिए और अधिक केंद्रीकृत:

x = np.where(np.logical_and((x*y) < 0, x != 0)) 

या

x = np.where(((x*y) < 0) & (x != 0))) 
+0

धन्यवाद, ऊपर उठाया :) – swyx

संबंधित मुद्दे