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