gpt4 book ai didi

python - pandas dataframe.where 行为不端

转载 作者:行者123 更新时间:2023-11-28 21:19:41 24 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数返回数据框或系列的每个位置的最大值,并最小化 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/

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