2015-10-21 28 views
10

Tôi có dataframe sau:gấu trúc thay thế số không với zero giá trị không trước

index = range(14) 
data = [1, 0, 0, 2, 0, 4, 6, 8, 0, 0, 0, 0, 2, 1] 
df = pd.DataFrame(data=data, index=index, columns = ['A']) 

Làm thế nào tôi có thể điền vào số không với giá trị trước đó khác không sử dụng gấu trúc? Có fillna không chỉ dành cho "NaN" không ?.

Kết quả sẽ giống như thế:

[1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1] 

(Câu hỏi này đã được hỏi trước đây Fill zero values of 1d numpy array with last non-zero values nhưng ông hỏi dành riêng cho một giải pháp NumPy)

Trả lời

17

Bạn có thể sử dụng replace với method='ffill'

In [87]: df['A'].replace(to_replace=0, method='ffill') 
Out[87]: 
0  1 
1  1 
2  1 
3  2 
4  2 
5  4 
6  6 
7  8 
8  8 
9  8 
10 8 
11 8 
12 2 
13 1 
Name: A, dtype: int64 

Để nhận mảng ô uế, hãy làm việc trên values

In [88]: df['A'].replace(to_replace=0, method='ffill').values 
Out[88]: array([1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1], dtype=int64) 
+1

Đó chính là điều tôi đang tìm kiếm. Cảm ơn @ John Galt, không thể chấp nhận câu trả lời sau 9 phút nữa .... – Gabriel

Các vấn đề liên quan