np.where()仅计算一次np.random.choice()-熊猫

问题描述 投票:1回答:2

我有这个数据框:

np.random.seed(0)
N = 10000
N_Seg = 100
df = pd.DataFrame({"Rut_Num": range(1,N+1),
              "Segmento": np.random.choice(
                      ["Afluente", "Afluente","Premium", "Preferente", "Preferente", "Preferente", "Preferente", "Clásico", "Clásico", "Clásico", "Clásico", "Clásico", "Clásico"], N),
              "If_Seguro": np.random.choice([0,1,1], N)})
df.head()

   Rut_Num    Segmento  If_Seguro
0        1     Clásico          1
1        2  Preferente          0
2        3    Afluente          0
3        4  Preferente          0
4        5     Clásico          1

If_Seguro列为1时,我需要一个介于1和N_Seg+1之间的随机数,如果其为0,则我需要一个0:

np.random.seed()
df.loc[:,"id_Seguro"] = np.where(df["If_Seguro"] == 1, np.random.choice(range(1,N_Seg+1),1),0)
df["id_Seguro"].value_counts()

[当我需要np.where()的每个1的随机数时,您会发现If_Seguro的真条件将为所有数字赋予相同的数字>

此外,为什么np.where()对于整个列只计算一次np.random.choice(),而对于列中的每个验证(每行)却不计算呢?

我有此数据帧:np.random.seed(0)N = 10000 N_Seg = 100 df = pd.DataFrame({“ Rut_Num”:range(1,N + 1),“ Segmento”:np.random.choice ([[“ Afluente”,“ Afluente”,“ ...

python pandas numpy
2个回答
0
投票

size中的参数np.random.choice用于具有相同大小的数组,例如DataFrame的行数。


1
投票

np.where(df["If_Seguro"] == 1, np.random.choice(range(1,N_Seg+1),1),0)表示我认为经常遇到但通常不受欢迎的where使用。该解决方案还将回答您有关为何仅生成一个值的问题。

© www.soinside.com 2019 - 2024. All rights reserved.