我正在尝试将一个数组 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/