gpt4 book ai didi

python - 如何更改 NaN 值之前和之后的值?

转载 作者:行者123 更新时间:2023-12-04 17:13:18 25 4
gpt4 key购买 nike

如何更改 NaN 值之前和之后的值?
示例数据帧:

df = pd.DataFrame({"a":[1, np.nan, 3, 5 , 6,3,np.nan],"b":[np.nan, 2, np.nan, 
7,2,1,1],"c":[np.nan,4, 8, 9,7,6,5]})
预期输出:
df_expected = pd.DataFrame({"a":[0, np.nan, 0, 5 , 6,0,np.nan],"b":[np.nan, 0, np.nan, 
0,2,1,1],"c":[np.nan,0, 8, 9,7,6,5]})
enter image description here
提前致谢!

最佳答案

使用 DataFrame.mask | 链接按位 OR值上下移动 DataFrame.shift 仅过滤 non NaN s by 链接 &bitwise AND :

df = df.mask((df.shift().isna() | df.shift(-1).isna()) & df.notna(), 0)
print (df)
a b c
0 0.0 NaN NaN
1 NaN 0.0 0.0
2 0.0 NaN 8.0
3 5.0 0.0 9.0
4 6.0 2.0 7.0
5 0.0 1.0 6.0
6 NaN 0.0 0.0
另一个解决方案 fill_value具有任何值并由 | 链接应该用于不使用 notna面具:
df = df.mask(df.shift(fill_value=1).isna() | df.shift(-1, fill_value=1).isna(), 0)
print (df)
a b c
0 0.0 NaN NaN
1 NaN 0.0 0.0
2 0.0 NaN 8.0
3 5.0 0.0 9.0
4 6.0 2.0 7.0
5 0.0 1.0 6.0
6 NaN 1.0 5.0

关于python - 如何更改 NaN 值之前和之后的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69086682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com