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 notnawhere:

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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.