gpt4 book ai didi

python - 大于/小于 Pandas DataFrames/Series 之间的比较

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:31 25 4
gpt4 key购买 nike

如何比较 DataFrame 和 Series?我想屏蔽 DataFrame/Series 中大于/小于另一个 DataFrame/Series 中的元素的元素。

例如,以下不会替换大于平均值的元素与 nans 虽然我期待它:

>>> x = pd.DataFrame(data={'a': [1, 2], 'b': [3, 4]})
>>> x[x > x.mean(axis=1)] = np.nan
>>> x
a b
0 1 3
1 2 4

如果我们看一下通过比较创建的 bool 数组,它真的很奇怪:

>>> x = pd.DataFrame(data={'a': [1, 2], 'b': [3, 4]})
>>> x > x.mean(axis=1)
a b 0 1
0 False False False False
1 False False False False

我不明白生成的 bool 数组是什么样的逻辑。我可以使用转置来解决这个问题:

>>> (x.T > x.mean(axis=1).T).T
a b
0 False True
1 False True

但我相信有一些我不知道的“正确”方法可以做到这一点。至少我想了解发生了什么。

最佳答案

这里的问题是它将索引解释为列值来执行比较,如果你使用 .gt 并传递 axis=0 那么你会得到你的结果愿望:

In [203]:
x.gt(x.mean(axis=1), axis=0)

Out[203]:
a b
0 False True
1 False True

当你与 np 数组进行比较时,你可以明白我的意思:

In [205]:
x > x.mean(axis=1).values

Out[205]:
a b
0 False False
1 False True

这里可以看到默认的比较轴在列上,导致结果不一样

关于python - 大于/小于 Pandas DataFrames/Series 之间的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542226/

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