当使用 Pandas 的Series.where函数时,我遇到了以下行为:似乎应用可Series.where为空条件的结果取决于参数的值inplace。
比较以下两个代码片段:
s = pd.Series(range(6))
cond = [True, False, pd.NA, False, True, True]
t = s.where(cond=cond)
Run Code Online (Sandbox Code Playgroud)
给出
t
0 0.0
1 NaN
2 NaN
3 NaN
4 4.0
5 5.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)
然而
s = pd.Series(range(6))
cond = [True, False, pd.NA, False, True, True]
s.where(cond=cond, inplace=True)
Run Code Online (Sandbox Code Playgroud)
给出
s
0 0.0
1 NaN
2 2.0
3 NaN
4 4.0
5 5.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)
这似乎是一个设计选择。事实上,在查看源代码时,我们看到以下内容:
# make sure we are boolean
fill_value …Run Code Online (Sandbox Code Playgroud)