này sẽ làm việc trong 0.13 (vẫn còn trong phát triển)
In [19]: df = DataFrame(randn(10,2),columns=list('ab'))
In [20]: df
Out[20]:
a b
0 0.958465 0.679193
1 -0.769077 0.497436
2 0.598059 0.457555
3 0.290926 -1.617927
4 -0.248910 -0.947835
5 -1.352096 -0.568631
6 0.009125 0.711511
7 -0.993082 -1.440405
8 -0.593704 0.352468
9 0.523332 -1.544849
này sẽ có thể như 'a + b'
(sớm)
In [21]: formulas = { 'c' : 'df.a + df.b' }
In [22]: def update(df,formulas):
for k, v in formulas.items():
df[k] = pd.eval(v)
In [23]: update(df,formulas)
In [24]: df
Out[24]:
a b c
0 0.958465 0.679193 1.637658
1 -0.769077 0.497436 -0.271642
2 0.598059 0.457555 1.055614
3 0.290926 -1.617927 -1.327001
4 -0.248910 -0.947835 -1.196745
5 -1.352096 -0.568631 -1.920726
6 0.009125 0.711511 0.720636
7 -0.993082 -1.440405 -2.433487
8 -0.593704 0.352468 -0.241236
9 0.523332 -1.544849 -1.021517
Bạn thể thực hiện một cái móc vào SetItem trên khung dữ liệu để có loại chức năng này được gọi là tự động. Nhưng khá phức tạp. Bạn không chỉ định cách khung được cập nhật ở vị trí đầu tiên. Có thể đơn giản nhất là gọi hàm cập nhật sau khi bạn thay đổi các giá trị
hiện các chuỗi trong các chức năng hỗ trợ eval, như, df [ 'c'] = df.eval ('a.diff() + b') ? – bigbug
No. Lưu trữ kết quả của một cuộc gọi hàm trong một biến. –
Có thể thêm hỗ trợ chức năng vào chuỗi trong phiên bản tiếp theo không? Mặc dù không mang lại bất kỳ nâng cấp hiệu suất nào. Đối với điều đó sẽ cho phép dataframe chấp nhận biểu thức đầu vào của người dùng và tính kết quả cho phù hợp. (giải pháp hiện tại của tôi là sử dụng pyparsing để phân tích và sửa đổi biểu thức, sau đó thực hiện nó, hơi xấu xí) – bigbug