我有一个包含100条记录的数据集,我正在尝试为每个记录关联一个随机数。此刻,我有这个:
sql
这似乎有效。然后,我想根据此随机数在给定间隔内的位置将“ L”值与每个记录相关联。例如,
df['RAND'] = [random.uniform(0,1) for k in df.index]
以此类推。我在执行最后一部分时遇到了麻烦,因为我不确定如何将“ L”值关联到每个特定记录。
感谢您的帮助。谢谢。
答案 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)