大家好,我查遍了SO和谷歌,但找不到任何类似的东西......
我有一个数据框 x(基本上由一行和 300 列组成)和另一个大小相同但数据不同的数据框 y。我想修改 x ,如果它与 y 有不同的符号并且 x 本身不为 0,则它为 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
但这似乎也不起作用。我已经这么做了好几个小时了,完全不知所措。请帮忙!
我不清楚你是什么exactly想做的时候y
元素等于零......无论如何,这个答案的关键点是“使用np.logical_{and,not,or,xor}
功能”。
I think尽管以下内容的表述与您的示例不同,但它可以满足您的要求,但如果我错了,您应该能够结合不同的测试来实现您想要的,
x = np.where(np.logical_or(x*y>0, y==0), x, 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)