【问题标题】:How to create more random rows for a Pandas Dataframe?如何为 Pandas Dataframe 创建更多随机行?
【发布时间】:2019-06-06 14:18:34
【问题描述】:

假设我有一个 Pandas 数据框,只有一行,看起来像这样:-

      Column1 Column2 ...... Column n
Row 1 0.123  0.234.          0.156

现在,例如,我想为此再生成 10 行,一种方法是将此行复制 10 次。但是,我希望它在数学和逻辑上是连贯的,例如生成的另外 10 行遵循正态分布(尽管问题是只有 1 行),但不希望所有行都相同。是否有任何合适的方法可以根据这一单行生成更多随机行,从而使这些行不仅仅是简单的重复?

【问题讨论】:

  • 以 10 种不同的方式打乱值的顺序?
  • 您可以生成正常的随机噪声并添加到该行。
  • 您希望新行以何种方式与第 1 行相同?新行将继承什么属性?
  • 你看过numpy.random吗? (doc)
  • @piRSquared 在这种情况下,我要定位的主要方面是再生成 10 行,例如,其中 5 行具有从第 1 行实例中减去的随机值,而其他 5 行具有添加到第 1 行实例的随机值。由于没有继承平均值的范围(因为 Column1-Column n 都是不同的参数),我希望能够生成更多与 Row1 非常相似的行,但不完全重复。谢谢。

标签: python pandas dataframe random


【解决方案1】:

这将获取您的 df,获取第一行的平均值和标准差,并使用正态分布中的数字附加任意数量的行。更改范围以添加更多。

import pandas as pd
import numpy as np

df = pd.DataFrame(df) 

standev = df.std(axis=1)
rowmean = df.mean(axis=1)

standev = standev[0]
rowmean = rowmean[0]
ncolumns = len(df.columns)

rows = []

for i in range(10):
    noise = np.random.normal(rowmean , standev , ncolumns)
    df.loc[len(df)]=noise

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 2021-03-04
    • 2022-11-27
    • 2019-10-22
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多