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

标签 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 循环有一些问题。

最佳答案

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

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())

关于python - 使用python比较两个数组中的元素并在一个值大于另一个值时返回True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48550897/

相关文章:

python - BeautifulSoup 没有获取元标记

Python 使用 pandas 读取 Excel 中的问题

python - Pandas - 当频率不是倍数时重新采样?

javascript - 返回最大的数组

python - 带圆角的 Seaborn 或 Matplotlib 箱线图

python - 如何在连接字符串值时旋转 pandas DataFrame?

python - 无法获取正确的时间戳范围

javascript - 如何使用 map 从 JavaScript 中的 URL 数组创建图像数组?

javascript - 为什么这个 JavaScript 闭包数组保留旧值

python - 基于列删除重复行 MySQL