【问题标题】:Randomly select and assign values to given number of rows in python dataframe随机选择并分配值给python数据框中的给定行数
【发布时间】:2020-11-14 07:34:13
【问题描述】:

如何在 python 数据框中随机选择和分配给定行数的值。 Col B 仅包含 1 和 0。 假设我有一个如下的数据框

Col A    Col B
  A        0
  B        0
  A        0
  B        0
  C        0
  A        0
  B        0
  C        0
  D        0
  A        0

我的目标是随机选择 5% 的行并将 Col B 的值更改为 1。我看到 df.sample() 但这不允许我对列数据进行就地更改

【问题讨论】:

  • np.random.choice([0,1], len(df['Col B']), p= [0.95, 0.05])?

标签: python-3.x pandas dataframe random


【解决方案1】:

您可以先使用sample 方法获取随机的5% 示例并获取它们的索引,如下所示:

samples_indices = df.sample(frac=0.05, replace=False).index

通过索引的知识,loc 方法可以用于更新与示例对应的值。

df.loc[samples_indices, 'Col B'] = 1

【讨论】:

    【解决方案2】:

    您可以尝试随机库。 Random 有它自己的采样函数。

    import Random
    randindx = Random.sample(arr.between(0, dataframe['Col B'].size), dataframe['Col B'].size//20)
    

    考虑到 5%,你需要除以 20。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多