python - 如何迭代地将随机值添加到 Pandas Dataframe 中的许多行?

标签 python pandas dataframe random

假设我有一个名为 df 的 Pandas Dataframe ,其结构如下:-

          Column 1 Column 2 ......... Column 104
Row 1      0.01     0.55                 3
Row 2      0.03     0.14                 1
...                       
Row 100    0.75    0.56                  0

我想要完成的是,对于符合下面给出的条件的所有行,我需要生成 100更多行的随机值介于 0 之间和0.05添加到每一行:-

is_less = df.iloc[:,-1] > 1
df_try = df[is_less]
df = df.append([df_try]*100,ignore_index=True)

问题是我可以简单地复制 df_try 中的行。生成100每种情况有更多行,但我也想向每一行添加一个随机值,这样每一行都与其他行不同但非常相似。

import random
df = df.append([df_try + random.uniform(0,0.05)]*100, ignore_index=True)

它的作用是将固定的随机值简单地添加到 df_try100新行,但不是每行的唯一随机值。我知道这是因为上面的语法不会迭代 df_try ,导致添加固定的随机值,但是在这种情况下有没有合适的方法在数据帧上迭代添加随机值?

最佳答案

一个想法是创建与新附加的 DataFrame 相同大小的二维数组,并使用 concat 添加到连接列表中:

N = 10
arr = np.random.uniform(0,0.05, size=(N, len(df.columns)))
is_less = df.iloc[:,-1] > 1
df_try = df[is_less]
df = df.append(pd.concat([df_try]*N) + arr,ignore_index=True)
print (df)
    Column 1  Column 2  Column 104
0   0.010000  0.550000    3.000000
1   0.030000  0.140000    1.000000
2   0.750000  0.560000    0.000000
3   0.024738  0.561647    3.045146
4   0.035315  0.584161    3.008656
5   0.022386  0.563025    3.033091
6   0.039175  0.588785    3.004649
7   0.049465  0.594903    3.003303
8   0.027366  0.580478    3.041745
9   0.044721  0.599853    3.001736
10  0.052849  0.589775    3.042434
11  0.033957  0.582610    3.045215
12  0.044349  0.582218    3.027665

如果需要向每个df_try添加标量,您的解决方案应该通过列表理解进行更改:

N = 10

is_less = df.iloc[:,-1] > 1
df_try = df[is_less]
df = df.append( [df_try + random.uniform(0, 0.05) for _ in range(N)], ignore_index=True)
print (df)
    Column 1  Column 2  Column 104
0   0.010000  0.550000    3.000000
1   0.030000  0.140000    1.000000
2   0.750000  0.560000    0.000000
3   0.036756  0.576756    3.026756
4   0.039357  0.579357    3.029357
5   0.048746  0.588746    3.038746
6   0.040197  0.580197    3.030197
7   0.011045  0.551045    3.001045
8   0.013942  0.553942    3.003942
9   0.054658  0.594658    3.044658
10  0.025909  0.565909    3.015909
11  0.012093  0.552093    3.002093
12  0.058463  0.598463    3.048463

关于python - 如何迭代地将随机值添加到 Pandas Dataframe 中的许多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490018/

相关文章:

python - 加载wmv文件后在wx.Media中播放视频的代码

python - tox和Travis-CI有什么关系和区别?

python - Pandas 中的堆叠线

Python:ufunc 'add' 不包含具有签名匹配类型的循环 dtype ('S21' ) dtype ('S21' ) dtype ('S21' )

python - Pandas - 为 Pandas 中的每个组插入空白行

python - pandas iterrows 抛出错误

python - 从 json 创建数据框时如何不推断架构?

python - Pandas 不根据条件选择列

python - 使用平均值填充 pandas 数据框中的缺失值

python - PySpark添加一列,其名称基于值