Ich entdeckte vor kurzem Pandas "assign" method, die ich sehr elegant finde. Mein Problem ist, dass der Name der neuen Spalte als Schlüsselwort zugewiesen ist, also keine Leerzeichen oder Bindestriche enthalten darf.Pandas zuweisen mit neuen Spaltennamen als String
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
aber was, wenn ich die neue Spalte "ln (A)" zum Beispiel benennen möchte? Zum Beispiel
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
Ich weiß, ich könnte die Spalte direkt nach dem .assign Anruf umbenennen, aber ich möchte mehr über diese Methode und ihre Syntax verstehen.
auch die Klammern sofort diesen Aufruf als eine Art Methode behandeln, die ein illegaler Name für eine var ist: https: //docs.python.org/3.2/reference/lexical_analysis.html#identifiers – EdChum
Aus dem obigen Beispiel kann ich immer noch tun df ['log (A)'] = df.sum (Achse = 1), aber ich verstehe warum Ich bekomme den Fehler oben (es wurde etwas erwartet) – FLab
aber 'df ['log (A)']' ist ein 'str', für den die Variablennamen Regeln nicht gelten – EdChum