首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Pandas不能用一个使用掩码/替换的0数组代替nan呢?

为什么Pandas不能用一个使用掩码/替换的0数组代替nan呢?
EN

Stack Overflow用户
提问于 2022-05-16 09:56:43
回答 3查看 127关注 0票数 1

我有这样的系列

代码语言:javascript
运行
复制
s = pd.Series([[1,2,3],[1,2,3],np.nan,[1,2,3],[1,2,3],np.nan])

我只想让NaN[0,0,0]取代。

我试过了

代码语言:javascript
运行
复制
s.fillna([0,0,0]) # TypeError: "value" parameter must be a scalar or dict, but you passed a "list"

s[s.isna()] = [[0,0,0],[0,0,0]] # just replaces the NaN with a single "0". WHY?!

s.fillna("NAN").replace({"NAN":[0,0,0]}) # ValueError: NumPy boolean array indexing assignment cannot 
                                          #assign 3 input values to the 2 output values where the mask is true


s.fillna("NAN").replace({"NAN":[[0,0,0],[0,0,0]]}) # TypeError: NumPy boolean array indexing assignment
                                                   # requires a 0 or 1-dimensional input, input has 2 dimensions

我真的不明白,为什么第一种方法行不通(也许我得到了第一种方法,但第二种方法我不能把头绕在头上)。

感谢的问答,我们可以通过

代码语言:javascript
运行
复制
is_na = s.isna()
s.loc[is_na] = s.loc[is_na].apply(lambda x: [0,0,0])

但是由于apply的速度往往很慢,我无法理解,为什么我们不能像上面那样使用replace或切片

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72257351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档