根据随机数将值关联到行

时间:2018-09-23 16:25:10

标签: python database pandas dataframe

我有一个包含100条记录的数据集,我正在尝试为每个记录关联一个随机数。此刻,我有这个:

sql

这似乎有效。然后,我想根据此随机数在给定间隔内的位置将“ L”值与每个记录相关联。例如,

df['RAND'] = [random.uniform(0,1) for k in df.index]

以此类推。我在执行最后一部分时遇到了麻烦,因为我不确定如何将“ L”值关联到每个特定记录。

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

我建议您使用np.random指定size参数,这比循环要快*

df['RAND'] = np.random.uniform(0,1, size=df.index.size)

要分配L,可以使用np.select指定条件和值

conditions = [df.RAND >=0.89, (df.RAND < 0.89) & (df.RAND >= 0.1), df.RAND < 0.1]
choices = ['L0', 'L1', 'L2']

df['L'] = np.select(conditions, choices)

这些方法比循环遍历数据帧更好。如果遍历数据帧,则会失去pandas库带给表的所有功能;)


*

%timeit [random.uniform(0,1) for k in range(10000)]
3.41 ms ± 65.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit np.random.uniform(0,1, size=10000)
113 µs ± 2.36 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)