一行中遍历两个序列,然后应用逻辑

时间:2019-02-13 19:43:11

标签: python pandas loops logic series

我有两个熊猫系列的高度和距离。

如果高度大于500,我想将高度除以10。 与“距离”完全相同。

我尝试过了...

for i,j in map(None,Height, Distance):
if i > 500:
    i = i/10
else:
    i=i
if j > 500:
    j=j/10
else:
    j=j

有没有办法用两个逻辑语句而不是四个逻辑语句来做到这一点?

if i,j > 500:
    i = i/10 
    j = j/10
else:
    i=i+10
    j=j+10

执行此操作时出现错误

  

如果i,j> 500:           ^   SyntaxError:语法无效

请注意,如果我实现i> 500和j> 500,则必须满足这两种情况。

2 个答案:

答案 0 :(得分:0)

注意:在编写此答案后,已对问题进行了编辑,并更改了用例。

您不应为此使用for循环:它们较慢且难以阅读。

请尝试以下代码:

Height[Height > 500] /= 10
Distance[Distance > 500] /= 10

这会将高度和距离大于500的值除以10。如果您需要保留原件的值,则可以先简单地进行复印:

corrected_height = Height.copy()
corrected_height[corrected_height > 500] /= 10

答案 1 :(得分:0)

您可以使用numpy中的np.where,在其中可以为每个系列的一行指定更新条件:

import numpy as np
# For each series, divide value by 10 if condition is true else add 10
Height = np.where(Height > 500, Height/10, Height+10)
Distance = np.where(Distance > 500, Distance/10, Distance+10)