[英]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.