作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个函数,该函数返回数据框或系列的每个位置的最大值,并最小化 NaN。
In [217]: a
Out[217]:
0 1
0 4 1
1 6 0
[2 rows x 2 columns]
In [218]: b
Out[218]:
0 1
0 NaN 3
1 3 NaN
[2 rows x 2 columns]
In [219]: do_not_replace = b.isnull() | (a > b)
In [220]: do_not_replace
Out[220]:
0 1
0 True False
1 True True
[2 rows x 2 columns]
In [221]: a.where(do_not_replace, b)
Out[221]:
0 1
0 4 3
1 1 0
[2 rows x 2 columns]
In [222]: expected
Out[222]:
0 1
0 4 3
1 6 0
[2 rows x 2 columns]
In [223]: pd.__version__
Out[223]: '0.13.1'
我想还有其他方法可以实现此功能,但我无法弄清楚这种行为。我的意思是,那个 1 来自哪里?我认为逻辑是合理的。我是否误解了函数的工作原理?
最佳答案
这本质上就是 where
内部所做的事情。我认为这可能是一个换位错误。错误修复 here .结果是一个对称的 DataFrame 和一个需要重现的传递帧。非常微妙。请注意,这种其他形式的索引(如下)使用了不同的方法,所以没问题。
In [56]: a[~do_not_replace] = b
In [57]: a
Out[57]:
0 1
0 4 3
1 6 0
注意:这已在 master/0.14.1 中修复。
关于python - pandas dataframe.where 行为不端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296480/
我是一名优秀的程序员,十分优秀!