嗨,伙计们,我已经看到了所有的SO和谷歌,无法找到类似的东西......
我有一个数据帧x(基本上由一行和300列组成)和另一个具有相同大小但数据不同的数据帧y。我想修改x使得如果它与y具有不同的符号则为0,并且x本身不为0,否则保持原样。所以这需要使用具有多个条件的np.where。然而,我见过的多个条件示例都使用标量,当我使用相同的语法时,它似乎不起作用(最终设置 - 所有 - 为零,没有错误)。我担心隐藏在某处或其他地方的引用分配问题(移位后y是x,但据我所知,在此代码之上没有上游问题)任何想法?
我试图调试的代码是:
tradesmade[i:i+1] = np.where((sign(x) != sign(y)) & (sign(x) != 0), 0, x)
只返回一堆零。我也试过
tradesmade[i:i+1][(sign(x) != sign(y)) * (sign(x) != 0)] = 0
但这似乎也不起作用。我已经在这几个小时了,我完全失去了。请帮忙!
答案 0 :(得分:12)
当y
元素等于零时,我不清楚你完全想做什么...无论如何,这个答案的关键点是“使用{{1函数“。
我认为以下内容虽然与您的示例不同,但却做了您想要的,但如果我错了,您应该能够结合不同的测试来实现您想要的目标,
np.logical_{and,not,or,xor}
答案 1 :(得分:4)
与@gboffi的帖子类似,但根据我的理解,对原始请求更加集中,请尝试:
x = np.where(np.logical_and((x*y) < 0, x != 0))
或
x = np.where(((x*y) < 0) & (x != 0)))