【发布时间】:2015-02-27 07:21:14
【问题描述】:
大家好,我翻遍了 SO 和 google,但找不到类似的东西......
我有一个数据框 x(基本上由一行和 300 列组成)和另一个大小相同但数据不同的数据框 y。我想修改 x 使其为 0,如果它与 y 有不同的符号并且 x 本身不是 0,否则保持原样。所以这需要在多个条件下使用 np.where 。但是,我看到的多个条件示例都使用标量,当我使用相同的语法时,它似乎不起作用(最终将 -everything- 设置为零,没有错误)。我担心隐藏在某处或其他地方的引用分配问题(转移后 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
但这似乎也不起作用。我已经在这几个小时了,完全不知所措。请帮忙!
【问题讨论】:
-
为什么要使用单行 300 列的 DataFrame 而不是 Series?
-
哈哈,是的,我应该预料到这个问题。我实际上正在迭代该数据帧的> 3000行,但是每次计算都取决于先前行的结果,因此必须一次走一行。我知道向量化的重要性和速度,但优先考虑得到答案(我似乎也没有成功......)
-
子句
sign(x) != 0是不必要的。
标签: python pandas multiple-conditions