我最近發現了熊貓"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調用後重命名列,但我想更多地瞭解這個方法及其語法。
以及括號立即將此視爲某種方法調用的這是一個變種非法的名字:HTTPS: //docs.python.org/3.2/reference/lexical_analysis.html#identifiers – EdChum
從上面的例子,我仍然可以做df ['log(A)'] = df.sum(axis = 1),但我明白爲什麼我得到上面的錯誤(有點期待) – FLab
,但'df ['log(A)']'是一個'str',變量名稱規則不適用 – EdChum