Gần đây tôi đã phát hiện gấu trúc "assign" method mà tôi thấy rất thanh lịch. Vấn đề của tôi là tên của cột mới được gán làm từ khóa, vì vậy nó không thể có dấu cách hoặc dấu gạch ngang trong đó.gấu trúc được gán với tên cột mới là chuỗi
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
nhưng nếu tôi muốn đặt tên cho cột mới "ln (A)" thì sao? Ví dụ:
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
Tôi biết tôi có thể đổi tên cột ngay sau cuộc gọi .assign, nhưng tôi muốn hiểu thêm về phương pháp này và cú pháp của nó.
cũng ngoặc ngay lập tức điều này như là một số loại phương thức gọi đó là một cái tên bất hợp pháp cho một var: https: //docs.python.org/3.2/reference/lexical_analysis.html#identifiers – EdChum
Từ ví dụ trên, tôi vẫn có thể làm df ['log (A)'] = df.sum (axis = 1), nhưng tôi hiểu tại sao Tôi nhận được lỗi ở trên (nó đã được phần nào dự kiến) – FLab
nhưng 'df ['log (A)']' là một 'str' mà các quy tắc tên biến không áp dụng – EdChum