私は最近、非常にエレガントなパンダ"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(A)」という新しい列に名前を付ける場合はどうすればよいですか? など。
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呼び出した後、列の名前を変更する可能性が知っているが、私はこの方法とその構文についての詳細を理解したいです。
だけでなく、カッコがすぐVARのために違法な名前でメソッド呼び出しのいくつかの種類として扱います。 //docs.python.org/3.2/reference/lexical_analysis.html#identifiers – EdChum
上記の例から、私はまだdf ['log(A)'] = df.sum(axis = 1)を実行できますが、私は上記のエラーを受け取りました。(それは多少期待されていました) – FLab
しかし 'df ['log(A)']'は変数名規則が適用されない 'str'です – EdChum