Pandas- Điền nans cho đến khi giá trị không phải NULL đầu tiên


9

Tôi có một khung dữ liệu như

A    B    C
1    nan  nan
2    nan  5
3    3    nan
4    nan  nan

Làm cách nào để tôi chỉ điền các NULL (bằng 0) cho mỗi chuỗi cho đến khi giá trị không phải NULL đầu tiên, dẫn đến

A    B    C
1    0    0
2    0    5
3    3    nan
4    nan  nan

Câu trả lời:


6

Một chút mẹo sử dụng pandas.DataFrame.ffillvới notnavà where:

df.where(df.ffill().notna(), 0)

Hoặc sử dụng pandas.DataFrame.interpolate:

df.interpolate('zero', fill_value=0, limit_direction='backward')

Đầu ra:

   A    B    C
0  1  0.0  0.0
1  2  0.0  5.0
2  3  3.0  NaN
3  4  NaN  NaN

6

Điều này sẽ được thực hiện bằng cách sử dụng wherehoặc mask.

df.mask(df.notna().cumsum().eq(0), 0)
# or,
df.where(df.notna().cumsum().ne(0), 0)

   A    B    C
0  1  0.0  0.0
1  2  0.0  5.0
2  3  3.0  NaN
3  4  NaN  NaN

Nhiều cách để lột da mèo ở đây :-)


0

Vì 0 + nan là nan nên nó hoạt động:

xf = df.fillna(0) + df.bfill()*0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.