gpt4 book ai didi

python - 根据其他列添加随机数列

转载 作者:行者123 更新时间:2023-12-01 09:06:33 25 4
gpt4 key购买 nike

我正在尝试在 pandas 数据框中添加一列,该列的平均值等于初始列,但每行可能会偏离一些小数点。理想情况下偏离正态分布,但我不知道如何做到这一点。

我尝试了如下所示的简单代码:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(1,99,size=(100000, 1)), columns=["GOD_prob"])

df["GOD_prob"] = df["GOD_prob"] / 100
df["GOD_odd"] = 1 / df["GOD_prob"]

df["market_prob"] = ((df["GOD_prob"] * 100 ) + np.random.randint(-10,10, len(df))) / 100
df["market_price"] = 1 / df["market_prob"]

我遇到的问题是,对于 df["GOD_prob"] 中的值低于 0.10,我可以获得 df["market_prob"] 的负值,但我不希望这样,因为这些列代表概率。

之后我想创建另一列,平均偏离 df["GOD_prob"] 5%,但我不太确定如何做到这一点。

感谢您的帮助!

最佳答案

由于您的问题在于负值,我建议剪掉这些值或重新分配。

选项 1:

s = df['GOD_prob']
df['market_prob'] = np.random.normal(s, 0.05*s).clip(0,1)

选项 2:

s = df['GOD_prob']
df['market_prob'] = np.random.normal(s, 0.05*s)
cond = (df['market_prob']<0)|(df['market_prob']>1)
while cond.any():
s = df.loc[cond, 'GOD_prob']
df.loc[cond, 'market_prob'] = np.random.normal(s, 0.05*s)
cond = (df['market_prob']<0)|(df['market_prob']>1)

第一个选项可能会导致一些偏差变化。

第二个选项可能效率低下,但会保留一定的偏差。

关于python - 根据其他列添加随机数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52003418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com