熊猫:np.where在数据帧上有多个条件

swy*_*wyx 6 python multiple-conditions pandas

嗨伙计们,我看到了所有的SO和谷歌,不能找到类似的东西......

我有一个数据帧x(基本上由一行和300列组成)和另一个具有相同大小但数据不同的数据帧.我想修改x,如果它与y具有不同的符号,则为0,并且x本身不为0,否则保持原样.所以这需要使用具有多个条件的np.where.然而,我见过的多个条件示例都使用标量,当我使用相同的语法时,它似乎不起作用(最终设置 - 所有 - 为零,没有错误).我担心隐藏在某处或其他地方的引用分配问题(移位后y是x,但据我所知,这个代码上面没有上游问题)任何想法?

我试图调试的代码是:

tradesmade[i:i+1] = np.where((sign(x) != sign(y)) & (sign(x) != 0), 0, x) 
Run Code Online (Sandbox Code Playgroud)

它只返回一堆零.我也试过了

tradesmade[i:i+1][(sign(x) != sign(y)) * (sign(x) != 0)] = 0
Run Code Online (Sandbox Code Playgroud)

但这似乎也不起作用.我已经在这几个小时了,我完全失去了.请帮忙!

gbo*_*ffi 12

这是我不清楚你究竟想要做的,当y元素等于零......反正在这个答案的关键点是"使用np.logical_{and,not,or,xor}功能".

认为以下内容虽然与您的示例有所不同,但却能满足您的需求,但如果我错了,您应该能够结合不同的测试来实现您的目标,

x = np.where(np.logical_or(x*y>0, y==0), x, 0)
Run Code Online (Sandbox Code Playgroud)

  • 我花了很长时间才认识到答案的绝对伟大,但最终你接受了它!......说真的:谢谢你花时间回去勾选我的答案...... (2认同)