微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为 x 行随机分配 0 或 1 取决于 excel 中的 y 列值

如何解决如何为 x 行随机分配 0 或 1 取决于 excel 中的 y 列值

我正在尝试在 excel 中生成以下示例数据。有 3 列,我希望输出类似于 IsShade 列。我试过 =RAndarray(20,1,TRUE) 但不能完全正常工作。 我只想显示随机“1”值,最多只能显示在 NoOfcells 值行的阴影中的值。

NoOfCells Shading IsShade(o/p)
5         2       0
5         2       0  
5         2       1
5         2       0
5         2       1
--------------------
4         3       1      
4         3       1  
4         3       0
4         3       1
--------------------
4         1       0
4         1       0
4         1       0
4         1       1
     

感谢是否有人可以帮助我。Python 代码也将起作用,因为我将在 csv 中读取 excel 并尝试生成输出 IsShade 列。谢谢!!

解决方法

编写您的 excel 文件的一小段 Python。如果您想在 Excel 中使用 Python,此代码不使用 Pandas NumPy,仅使用标准库,以保持简单。

import random
import itertools
import csv

cols = ['NoOfCells','Shading','IsShade(o/p)']
data = [(5,2),(4,3),1)]  # (c,s)

lst = []
for c,s in data:          # c=5,s=2
    l = [0]*(c-s) + [1]*s  # 3x[0],2x[1] -> [0,1,1]
    random.shuffle(l)      # shuffle -> [1,1]
    lst.append(zip([c]*c,[s]*c,l))

# flat the list
lst = list(itertools.chain(*lst))

with open('shade.csv','w',newline='') as csvfile:
    writer = csv.writer(csvfile,delimiter=',')
    writer.writerow(cols)
    writer.writerows(lst)
>>> lst
[(5,2,1),(5,0),3,0)]
$ cat shade.csv
NoOfCells,Shading,IsShade(o/p)
5,0
5,1
5,1
4,0
4,0
,

您可以使用 RANDARRAY 计算 COUNTA 返回的数量或行数。还。要排除分界线,请测试 ISNUMBER

=LET(Data,FILTER(B:B,(B:B<>"")*(ROW(B:B)>1)),IF(ISNUMBER(Data),RANDARRAY(COUNTA(Data),TRUE),""))

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。