【发布时间】:2019-05-10 18:16:12
【问题描述】:
标题很混乱,所以让我解释一下。我有一个熊猫专栏:
x | desired x
1.5 | 1
1 | 1
1 | 1
1 | 1
1 | 1
0 | 0
0 | 0
0 | 0
0 | 0
1 | 0
0 | 0
-1.5|-1
-1 |-1
-1 |-1
-1 |-1
0 | 0
0 | 0
0 | 0
0 | 0
-1 | 0
0 | 0
0 | 0
1.5 | 1
...
目前,我已经使用 itertuples 解决了这个问题:
currval = np.nan
for idx in df.itertuples():
if idx[33] == 1.5:
currval = 1
elif idx[33] == -1.5:
currval = -1
elif idx[32] <> "":
currval = np.nan
else:
next
df.loc[idx.Index,'refPos2'] = currval
但是,这段代码太慢了,想知道是否有人对如何向量化它有想法。
谢谢!
【问题讨论】:
-
它们只是我正在使用的数据框中的列。 Idx 是行迭代。如果有帮助,32 是一个名为 exit 的指标列,33 是一个名为 'refPos' 的指标列
-
不,只是传递给下一次迭代
-
它会起作用,但不会达到您的预期。我认为您需要使用 pass 而不是 next。 next 是一个内置函数
-
我已经删除了以前的 cmets,这些都太大了。
<>已被弃用很长时间,next没有做你想做的事,你的问题也不清楚。它看起来很容易矢量化,但你真的应该花更多的精力来解释你在做什么。
标签: python pandas python-2.x