ฉันมีชื่อไฟล์เช่น
A B C
1 nan nan
2 nan 5
3 3 nan
4 nan nan
ฉันจะเติม NULL ได้อย่างไร (ด้วย 0) สำหรับแต่ละชุดจนถึงค่า NULL แรกที่นำไปสู่
A B C
1 0 0
2 0 5
3 3 nan
4 nan nan
ฉันมีชื่อไฟล์เช่น
A B C
1 nan nan
2 nan 5
3 3 nan
4 nan nan
ฉันจะเติม NULL ได้อย่างไร (ด้วย 0) สำหรับแต่ละชุดจนถึงค่า NULL แรกที่นำไปสู่
A B C
1 0 0
2 0 5
3 3 nan
4 nan nan
คำตอบ:
เคล็ดลับที่ใช้pandas.DataFrame.ffill
กับnotna
และwhere
:
df.where(df.ffill().notna(), 0)
หรือใช้pandas.DataFrame.interpolate
:
df.interpolate('zero', fill_value=0, limit_direction='backward')
เอาท์พุท:
A B C
0 1 0.0 0.0
1 2 0.0 5.0
2 3 3.0 NaN
3 4 NaN NaN
นี้จะทำได้โดยใช้หรือwhere
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
มีหลายวิธีในการสกินแมวที่นี่ :-)
เนื่องจาก 0 + nan เป็น nan ใช้งานได้:
xf = df.fillna(0) + df.bfill()*0