python - 比较元素并返回大于随机数的值作为 true

标签 python arrays pandas for-loop random

我正在尝试将一个数组 px 中的每个唯一变量与另一个数组 py 中的随机数进行比较。如果 px 中的元素大于或等于 py 中的元素,那么我想将该值记为 True

这是一些代码。

import pandas as pd
import random

px = np.array([0.360617,0.360617,0.360617,0.989699,0.989699,0.989699,-1.020482])
py = np.random.uniform(low=0, high=1, size=len(px))

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

生成的数据框如下所示:

         px        py  status
0  0.360617  0.509826   False
1  0.360617  0.129870    True
2  0.360617  0.818778   False
3  0.989699  0.953721    True
4  0.989699  0.740662    True
5 -1.020482  0.302593    False

但我需要它看起来像这样。想象一下,每个唯一的 px 都有其自己关联的 0 到 1 之间的随机值 py

name  px        py         status
a     0.360617  0.509826   False
a     0.360617  0.509826   False
a     0.360617  0.509826   False
b     0.989699  0.953721   True
b     0.989699  0.953721   True
c     -1.020482 0.302593  False

我想这可以通过 for 循环来完成,其中每个 name 都与某个随机值相关联。

最佳答案

这是您需要的吗?

c,n=np.unique(px,return_counts=True)
py = np.random.uniform(low=0, high=1, size=len(n))
df = pd.DataFrame({'px':  np.repeat(c,n), 'py': np.repeat(py,n), 'status': np.repeat(c,n)>= np.repeat(py,n)})


df
Out[401]: 
         px        py  status
0 -1.020482  0.862371   False
1  0.360617  0.077589    True
2  0.360617  0.077589    True
3  0.360617  0.077589    True
4  0.989699  0.376675    True
5  0.989699  0.376675    True
6  0.989699  0.376675    True

关于python - 比较元素并返回大于随机数的值作为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48566704/

相关文章:

python - 如何使用 Python 从字符串中提取一些信息?

python - 部署 Python 程序时出现问题(用 py2exe 打包)

python - Tkinter 的 .after() 和递归

javascript - JavaScript 数组中的最小和最大索引

python - Pandas 数据框中的非统一日期列

java - 将从 URL 输出的 JSON 保存到文件

arrays - Visual Basic 数组 case 语句

javascript - 验证数组中是否存在元素

python - 比较 Pandas 中两个数据帧的列差异

python - 检查列是否包含类型字符串(对象)