我有一个带 aprox 的 DataFrame。4 列和 200 行。我创建了带有空值的第 5 列:
df['minutes'] = np.nan
然后,我想用随机逆对数正常值填充这个新列的每一行。生成 1 个逆对数 normal 的代码:
注意:如果下面的代码运行多次,由于里面的值,它会生成一个新的结果ppf()
:random.random()
df['minutes'] = df['minutes'].fillna(stats.lognorm(0.5, scale=np.exp(1.8)).ppf(random.random()).astype(int))
当我这样做时发生的事情是它用相同的 number填充所有 200 行df['minutes']
,而不是像我预期的那样触发random.random()
每一行。
我需要做什么?我尝试使用for loop
,但显然我没有做对(给出相同的结果):
for i in range(1,len(df)):
df['minutes'] = df['minutes'].fillna(stats.lognorm(0.5, scale=np.exp(1.8)).ppf(random.random()).astype(int))
我究竟做错了什么?
inverse log normal
另外,我稍后会补充一点,如果另一列的值为 0 或 1,我需要更改上面的一些参数。如:
if df['type'] == 0:
df['minutes'] = df['minutes'].fillna(stats.lognorm(0.5, scale=np.exp(1.8)).ppf(random.random()).astype(int))
elif df['type'] == 1:
df['minutes'] = df['minutes'].fillna(stats.lognorm(1.2, scale=np.exp(2.7)).ppf(random.random()).astype(int))
提前致谢。