【发布时间】:2018-07-11 01:53:03
【问题描述】:
我正在尝试在 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 循环有一些问题。
【问题讨论】:
-
您通过遍历数组来破坏使用
numpy的意义。以矢量化方式执行此操作:x = px >= py -
Pandas 支持向量化操作,解决方法很简单 df['status'] = df.px >= df.py
-
请不要这样改变问题。您从我的答案中取出了解决您问题的所有代码,并将其用作基础来开始一个全新的问题(!)。这使所有 cmets 和答案完全无效。如果这不能解决您的预期问题,那么您应该打开一个新问题,但如果这个问题(如最初询问的那样)已解决,请酌情标记为已接受。
-
好的,会的!不知道。谢谢!!
标签: python arrays pandas for-loop random