Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Thay thế giá trị âm bằng giá trị dương gần nhất trước đó trong Pandas

Thay thế các giá trị âm trong DataFrame bằng giá trị dương gần nhất đứng trước nó (trên cùng cột). Nếu không có giá trị dương trước đó, thay bằng 0. Sử dụng masking, forward fill (ffill()) và fillna(0).

Tạo DataFrame có giá trị âm

import pandas as pd

df = pd.DataFrame({'One': [-3, 7, 4, 0], 'two': [-6, -1, 2, -8]})
print("DataFrame gốc:\n", df)

Xử lý giá trị âm

# 1. mask(df.lt(0)): che phủ (mask) các giá trị < 0 thành NaN
# 2. ffill(): forward fill - lan truyền giá trị trước đó xuống dưới
# 3. fillna(0): điền 0 cho các NaN còn lại (không có giá trị dương trước đó)
# 4. astype('int32'): chuyển về kiểu nguyên
df = df.mask(df.lt(0)).ffill().fillna(0).astype('int32')

print("\nDataFrame sau xử lý:\n", df)

Kết quả

DataFrame gốc:
   One  two
0   -3   -6
1    7   -1
2    4    2
3    0   -8

DataFrame sau xử lý:
   One  two
0    0    0
1    7    0
2    4    2
3    0    2

Giải thích từng bước

BướcCột OneCột two
Gốc-3, 7, 4, 0-6, -1, 2, -8
mask(lt 0)NaN, 7, 4, 0NaN, NaN, 2, NaN
ffill()NaN, 7, 4, 0NaN, NaN, 2, 2
fillna(0)0, 7, 4, 00, 0, 2, 2

Kết quả cột "One" hàng 0: -3 → NaN → không có giá trị trước → fillna(0) → 0.
Cột "two" hàng 3: -8 → NaN → ffill lấy giá trị 2 từ hàng 2 → 2.