比较两个数组中的元素,当一个值大于另一个值时使用python返回True

时间:2018-01-31 20:28:04

标签: python arrays pandas for-loop random

我正在尝试在python中编写一个for循环,将一个数组px中的每个第i个元素与另一个数组py中的第i个元素进行比较。如果px中的元素大于或等于py的元素,则我要将该值视为True或1.

这是一些代码。

import pandas as pd
import random

px = np.random.normal(loc=0, scale=1, size=1000)
py = np.random.normal(loc=0, scale=1, size=1000)

for x, y in zip(px, py):
    print("{}% {}".format(x, y))
    if px[i] >= py[i]:
       px['status'] = True
    if px[i] < py[i]:
       px['status'] = False

最终的数据框应如下所示:

px                py                status
-2.24239571e-01   -1.83834445e+00   False
1.20102447e+00    5.01755172e-03    False    
8.82060986e-02    -2.55639665e-02   True

我知道我的for循环有一些问题。

2 个答案:

答案 0 :(得分:3)

如果你想要速度,你不应该遍历数组。相反,可以使用df['status'] = px >= py在矢量化操作中完成比较。从您的问题中不清楚数据是否已经存在于Dataframe中,所以从头开始:

import numpy as np
import pandas as pd
px = np.random.normal(loc=0, scale=1, size=1000)
py = np.random.normal(loc=0, scale=1, size=1000)

df = pd.DataFrame({'px': px, 'py': py, 'status': px >= py})
print(df.head())

答案 1 :(得分:1)

例如,未定义用作索引的i。 相反,只需使用已经从for循环获得的xy