के रूप में असाइन करते हैं मैंने हाल ही में पांडा "assign" method खोजा जो मुझे बहुत ही सुरुचिपूर्ण लगता है। मेरी समस्या यह है कि नए कॉलम का नाम कीवर्ड के रूप में असाइन किया गया है, इसलिए इसमें रिक्त स्थान या डैश नहीं हो सकते हैं।पांडा नए कॉलम नाम के साथ स्ट्रिंग
df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})
df.assign(ln_A = lambda x: np.log(x.A))
A B ln_A
0 1 0.426905 0.000000
1 2 -0.780949 0.693147
2 3 -0.418711 1.098612
3 4 -0.269708 1.386294
4 5 -0.274002 1.609438
5 6 -0.500792 1.791759
6 7 1.649697 1.945910
7 8 -1.495604 2.079442
8 9 0.549296 2.197225
9 10 -0.758542 2.302585
लेकिन क्या अगर मैं नया स्तंभ "ln (ए)" उदाहरण के लिए नाम के लिए करना चाहते हैं? ईजी।
df.assign(ln(A) = lambda x: np.log(x.A))
df.assign("ln(A)" = lambda x: np.log(x.A))
File "<ipython-input-7-de0da86dce68>", line 1
df.assign(ln(A) = lambda x: np.log(x.A))
SyntaxError: keyword can't be an expression
मैं जानता हूँ कि मैं सही .assign कॉल के बाद स्तंभ का नाम बदलने सकता है, लेकिन मैं इस विधि और अपने वाक्यविन्यास के बारे में अधिक जानना चाहते हैं।
अच्छी तरह से कोष्ठकों तुरंत विधि कॉल किसी तरह का है जो एक वर के लिए एक अवैध नाम है के रूप में इस का इलाज: //docs.python.org/3.2/reference/lexical_analysis.html#identifiers – EdChum
उपर्युक्त उदाहरण से, मैं अभी भी डीएफ ['लॉग (ए)'] = df.sum (अक्ष = 1) कर सकता हूं, लेकिन मुझे समझ में आता है क्यों मुझे उपर्युक्त त्रुटि मिलती है (यह कुछ हद तक अपेक्षित था) – FLab
लेकिन 'df ['log (ए)']' 'एक 'str' है जिसके लिए परिवर्तनीय नाम नियम लागू नहीं होते – EdChum