【问题标题】:simulate and store specific row to a dataframe模拟并将特定行存储到数据框中
【发布时间】:2020-05-15 22:30:07
【问题描述】:

我正在生成一个范围之间的随机数。一旦计算出随机数并将其附加到列表中,我就会创建一个数据框

这里我要选择第二行

然后我想生成上述逻辑三次 [暂时]

每次我想存储第二行。

import pandas as pd
import random
low_Percent = float(60)
high_Percent = float(120)

val_List=[]
val_List1 =[]
# for j in range(3):


for j in range(3):

    for i in range(30):
                num1 = (random.randint(low_Percent, high_Percent))
                num1 = num1/100
                val_List.append(num1)
                df= pd.DataFrame({'rand_num': val_List})
    val_List1.append(df.loc[2:2])
val_List1

现在我得到的是相同的随机数,而不是三个不同的随机数。我的逻辑怎么错了。

[   rand_num
 2       1.2,
    rand_num
 2       1.2,
    rand_num
 2       1.2]

我组织循环的方式是否错误。我假设 j = 1,然后我从 1-50 运行并创建 50 个随机数。 创建数据框并将第二行存储在数组中

然后 J = 2 并且同样的情况再次发生。因此,任何指针将不胜感激

添加excel截图以增加理解

【问题讨论】:

  • 因为val_list 是静态的,所以它不会按顺序更改,因此您创建的是更长的数据框,当然,但列表的顺序是相同的,因此第二个索引将是不管你做 3 次还是 3000 次都一样。
  • 数据新手。感谢你的回答。因为我是 python 初学者,所以我试图理解它。如果我有任何澄清,我将再次查看列表并与您联系

标签: python pandas dataframe


【解决方案1】:

这是一个版本

  1. val_List 置于for 循环中,因此——根据@Datanovice——它实际上会更新值。
  2. 使用iloc 而不是locloc 选择索引为“2”的行,这可能是也可能不是第二行,具体取决于数据帧。另一方面,iloc[1] 将始终选择第二行。
import pandas as pd
import random

low_Percent = float(60)
high_Percent = float(120)

val_List1 = []

for j in range(3):
    val_List = [] # Placed this inside

    for i in range(30):
        num1 = random.randint(low_Percent, high_Percent)
        num1 = num1 / 100
        val_List.append(num1)
        df = pd.DataFrame({"rand_num": val_List})

    val_List1.append(df.iloc[1].values[0]) # Changed the indexing method

val_List1

【讨论】:

    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多