Tôi cần tạo cột bắt đầu bằng giá trị ban đầu và sau đó được tạo bởi hàm bao gồm các giá trị trong quá khứ của cột đó. Ví dụ:Pandas: tạo cột có giá trị tự tham chiếu
df = pd.DataFrame({'a': [1,1,5,2,7,8,16,16,16]})
df['b'] = 0
df.ix[0, 'b'] = 1
df
a b
0 1 1
1 1 0
2 5 0
3 2 0
4 7 0
5 8 0
6 16 0
7 16 0
8 16 0
Bây giờ, tôi muốn tạo phần còn lại của cột 'b' bằng cách lấy tối thiểu hàng trước đó và thêm hai. Một giải pháp sẽ được
for i in range(1, len(df)):
df.ix[i, 'b'] = df.ix[i-1, :].min() + 2
Hệ quả là đầu ra mong muốn
a b
0 1 1
1 1 3
2 5 3
3 2 5
4 7 4
5 8 6
6 16 8
7 16 10
8 16 12
Liệu gấu trúc có một cách 'sạch' để làm điều này? Tốt nhất là một trong đó sẽ vector hóa tính toán?
Tôi không thể nghĩ ra cách không liên quan đến lặp lại. Nhưng tôi sẽ nói rằng bạn không phải sử dụng '.ix []'; bạn chỉ có thể có 'df.b [i] = df.iloc [i-1] .min() + 2'. – chrisaycock