我该如何在DataFrame和Series之间进行比较?我想要屏蔽DataFrame / Series中大于/小于另一个DataFrame / Series的元素。
例如,以下代码未将大于均值的元素替换为NaN,这与我的预期不符:
如果我们看一下比较所创建的布尔数组,它真的很奇怪:
例如,以下代码未将大于均值的元素替换为NaN,这与我的预期不符:
>>> 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
如果我们看一下比较所创建的布尔数组,它真的很奇怪:
>>> 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
我不明白这个布尔数组的逻辑是怎样的。我可以通过转置来解决这个问题:
>>> (x.T > x.mean(axis=1).T).T
a b
0 False True
1 False True
但我相信有一种“正确”的方法来完成这个任务,我不知道它是什么。至少我想了解发生了什么。