首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从DF中选取随机列并执行操作

从DF中选取随机列并执行操作
EN

Stack Overflow用户
提问于 2019-03-22 20:38:37
回答 1查看 14关注 0票数 0

我正在使用一个包含4,000列和17560行的df。我正在执行一个实验,我需要从数据中挑选5个随机列,并将其单元格的值乘以一个介于0.08到0.12之间的随机数。相乘只能在特定的时间间隔内完成。此外,该操作重复100次,每次重复都必须使用5个不同的列,这就是为什么需要随机挑选列的原因。目前,我正在使用以下代码:

代码语言:javascript
运行
复制
 interval = int(17560/365)    
 for k in range(1,100):
  rand_nums= np.random.uniform(0.08,0.12)
  df[34:45,:] *= (1-rand_nums)


  for i in range(1,interval):
    rand_nums = np.random.uniform(0.08,0.12,5)
    df[i*48+34:i*48+45,:] *= (1-rand_nums)

代码可以工作,因为在第二个for循环中,我指定了列数,但是,每次执行此操作时,它都会选取前5列。我的问题是:

有没有办法在每次执行此操作时都选择随机列,而不包括另一个for循环?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 20:43:03

使用:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

df = pd.DataFrame(columns= list(range(100)))

# Put these inside your loop
rand_cols = np.random.permutation(df.columns)[0:5]
df[rand_cols]

代码np.random.permutation混洗了所有的列名,现在这个列表的任何部分都将是列名的随机选择。

代码df[rand_cols]会选择df的一个子集,因此如果您将其乘以某个数字,例如df[rand_cols] = df[rand_cols] * 2,则只会修改rand_cols中的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55299785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档