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

如何在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

如果我们看一下比较创建的布尔数组,那真的很奇怪:

>>> 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

但我相信有一些“正确”的做法,我不知道.至少我想了解发生了什么.

最佳答案 这里的问题是它将索引解释为列值来执行比较,如果你使用.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

在这里,您可以看到用于比较的默认轴在列上,从而产生不同的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值