पंडों द्वारा उपयोग किए जाने वाले नियमों के बारे में मुझे भ्रम है कि यह निर्णय लेते समय कि डेटाफ़्रेम से चयन मूल डेटाफ़्रेम या मूल पर एक दृश्य की एक प्रति है।
यदि मेरे पास है, उदाहरण के लिए,
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
मैं समझता हूं कि एक query
प्रति लौटाता है ताकि कुछ पसंद आए
foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
मूल dataframe पर कोई प्रभाव नहीं पड़ेगा, df
। मैं यह भी समझता हूं कि स्केलर या नामित स्लाइस एक दृश्य लौटाते हैं, ताकि इनको असाइनमेंट, जैसे कि
df.iloc[3] = 70
या
df.ix[1,'B':'E'] = 222
बदल जाएगा df
। लेकिन जब यह अधिक जटिल मामलों की बात आती है तो मैं हार जाता हूं। उदाहरण के लिए,
df[df.C <= df.B] = 7654321
परिवर्तन df
, लेकिन
df[df.C <= df.B].ix[:,'B':'E']
नहीं करता।
क्या एक सरल नियम है कि पंडों का उपयोग किया जा रहा है कि मैं बस गायब हूँ? इन विशिष्ट मामलों में क्या हो रहा है; और विशेष रूप से, मैं एक डेटाफ़्रेम में सभी मानों (या मानों के सबसेट) को कैसे बदलूं जो एक विशेष क्वेरी को संतुष्ट करता है (जैसा कि मैं ऊपर अंतिम उदाहरण में करने का प्रयास कर रहा हूं)?
नोट: यह इस प्रश्न के समान नहीं है ; और मैंने दस्तावेज़ीकरण पढ़ा है , लेकिन मैं इससे प्रबुद्ध नहीं हूं। मैंने इस विषय पर "संबंधित" प्रश्नों के माध्यम से भी पढ़ा है, लेकिन मैं अभी भी याद कर रहा हूं कि सरल नियम पंडों का उपयोग किया जा रहा है, और मैं इसे कैसे लागू करूंगा - उदाहरण के लिए - मूल्यों को संशोधित करें (या मूल्यों का सबसेट) डेटाफ़्रेम में जो किसी विशेष क्वेरी को संतुष्ट करता है।
.query
क्या ALWAYS इसकी वजह से एक प्रति वापस लौटाएगा (और एक दृश्य नहीं), क्योंकि इसका मूल्यांकन n numexpr द्वारा किया गया है। तो मैं इसे 'नियमों' में जोड़ दूंगा