[英]Pandas dataframe assign 0 with all the value after first non-nan value
我有一個包含幾列和一個系列的數據框,其值是該數據框的第一個非Nan值的索引:
數據框x:
a b c d e f g h
1 nan nan 2 nan nan nan nan nan
2 nan 2 nan 10 23 nan nan nan
3 3 nan 23 42 232 3 nan 5
y系列:
a 3
b 2
c 1
d 2
e 2
f 3
g nan
h 3
現在我想通過系列的值(其值是數據幀x的第一個非NAN值的索引)將第一個非NAN值(包括第一個非NAN值)之后的所有值賦0
結果是
a b c d e f g h
1 nan nan 0 nan nan nan nan nan
2 nan 0 0 0 0 nan nan nan
3 0 0 0 0 0 0 nan 0
我使用applymap來處理它,但是applymap似乎不處理索引信息,這是我的代碼:
def mycode(x,y)
if x.index<=Y:
return 0
else:
return x
cal = x.applymap(lambda x: mycode(x,y))
可以使用ffill
( fillna
與method='ffill'
)與clip
:
x = x.ffill().clip(0,0)
x = x.where(x.ffill().isnull(), 0)
x = x.mask(x.ffill().notnull(), 0)
print (x)
a b c d e f g h
1 NaN NaN 0.0 NaN NaN NaN NaN NaN
2 NaN 0.0 0.0 0.0 0.0 NaN NaN NaN
3 0.0 0.0 0.0 0.0 0.0 0.0 NaN 0.0
詳情:
print (x.ffill())
a b c d e f g h
1 NaN NaN 2.0 NaN NaN NaN NaN NaN
2 NaN 2.0 2.0 10.0 23.0 NaN NaN NaN
3 3.0 2.0 23.0 42.0 232.0 3.0 NaN 5.0
print (x.ffill().isnull())
a b c d e f g h
1 True True False True True True True True
2 True False False False False True True True
3 False False False False False False True False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.