【问题标题】:Get random number of rows from an excel sheet in a dictionary Python从字典Python中的excel表中获取随机数的行
【发布时间】:2021-11-19 06:03:45
【问题描述】:

我有一本名为“new”的字典。我有大约 200 个键值命名为“5,10,15...1000”。每个键都有一个包含两列的数据框(每个键的长度不同)。

{'5':      C         V
 0     1.398926   3.284607
 1     1.399078   3.287659
 2     1.399078   3.290710
 3     1.399231   3.293152
 4     1.399384   3.295288
 ...        ...        ...
 7732  0.156128   4.247131
 7733  0.150513   4.246826
 7734  0.151444   4.246826
 7735  0.151993   4.246826
 7736  0.144974   4.246521

我想从每个键中提取相同序列中随机百分比的行(总行的 20% 到 80%)并将其存储在另一个字典“名称”中。

random.seed(100)      # to get same random number always
Name = {}
for sheet in new:

k = round(random.uniform(0.2,0.8),2) #generate a random number between 0.2 and 0.8 
Name[sheet] = new[sheet].sample(frac=k, random_state=50)

我试过这个。有了这个,我得到了总行数的百分比,但每一行都是从随机位置拾取的。它们不按如下顺序排列。

{'5':     C          V
 6994  1.167145  4.249268
 1248  1.402283  3.587341
 3530  1.402588  3.820190
 4585  1.402283  3.962708
 4058  1.402283  3.894653
 ...        ...       ...
 6603  1.401367  4.211426
 1348  1.402435  3.599243
 6383  1.401672  4.196167
 7716  0.157791  4.247131
 5413  1.401978  4.063110

但我需要按顺序选取的行。请告诉我该怎么做。

【问题讨论】:

    标签: python dataframe dictionary random


    【解决方案1】:

    我怀疑你想要一个 block 具有随机大小的行?如果是这样,你可以做类似的事情

    from random import seed, uniform, randint
    
    seed(100)
    Name = {}
    for sheet in new:
        p = round(uniform(0.2, 0.8), 2)
        p_length = int(round(new[sheet].shape[0] * p, 0))
        start = randint(0, new[sheet].shape[0] - p_length)
        Name[sheet] = new[sheet].loc[new[sheet].index[start:start + p_length], :]
    

    【讨论】:

    • 非常感谢@Timus ...完美运行....也是你写的方式,我可以清楚地理解它。谢谢你:)
    猜你喜欢
    • 2023-03-10
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2022-11-17
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多