gpt4 book ai didi

Pandas :根据条件创建一个具有随机值的新列

转载 作者:行者123 更新时间:2023-12-04 02:22:24 24 4
gpt4 key购买 nike

我试过在提问之前阅读类似的问题,但我仍然感到困惑。感谢任何帮助。

输入:我有一个 pandas 数据框,其中有一列标记为“radon”,其值在以下范围内:[0.5, 13.65]

输出:我想创建一个新列,其中所有 = 0.5 的氡值都更改为 0.1 和 0.5 之间的随机值

我试过这个:

df['radon_adj'] = np.where(df['radon']==0.5, random.uniform(0, 0.5), df.radon)

但是,对于所有 0.5 值,我得到相同的随机数


我也试过了。它创建随机数,但 else 语句不复制原始值

df['radon_adj'] = df['radon'].apply(lambda x: random.uniform(0, 0.5) if x == 0.5 else df.radon)

最佳答案

一种方法是在使用 where 选择它们之前创建您可能需要的所有随机数:

>>> df = pd.DataFrame({"radon": [0.5, 0.6, 0.5, 2, 4, 13]})
>>> df["radon_adj"] = df["radon"].where(df["radon"] != 0.5, np.random.uniform(0.1, 0.5, len(df)))
>>> df
radon radon_adj
0 0.5 0.428039
1 0.6 0.600000
2 0.5 0.385021
3 2.0 2.000000
4 4.0 4.000000
5 13.0 13.000000

你可以更聪明一点,只生成你实际需要的随机数,但我输入这句话的时间可能比你节省的时间要长。 (生成约 100 万个数字需要 9 毫秒。)

如果您使用 x 而不是 df.radon,您的 apply 方法也会起作用:

>>> df['radon_adj'] = df['radon'].apply(lambda x: random.uniform(0.1, 0.5) if x == 0.5 else x)
>>> df
radon radon_adj
0 0.5 0.242991
1 0.6 0.600000
2 0.5 0.271968
3 2.0 2.000000
4 4.0 4.000000
5 13.0 13.000000

关于 Pandas :根据条件创建一个具有随机值的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27112874/

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