创建一个随机填充二进制 DataFrames 矩阵集合的循环 - Python [重复]

问题描述 投票:0回答:1

我需要创建一个 DataFrame 集合,随机填充 0 和 1。我想迭代地这样做。

我通过以下代码创建一个这样的 DataFrame:

     bin1=np.random.rand(4,4)
     bin1_df=pd.DataFrame(bin1)
     binx1_df=(bin1_df==bin1_df.max()).astype(int)

结果如下所示(注意,0和1是随机生成的,每列中只有一个“1”):

0   0 0 0 1
1   1 0 0 0
2   0 1 0 0
3   0 0 1 0

如何迭代地(通过循环或其他方式)创建这些集合,例如四个集合?

我尝试首先创建指定的 DataFrame 列表,然后使用“随机”函数填充,但它不起作用 - 如下所示:

bins = ['bin1_df', 'bin2_df', 'bin3_df', 'bin4_df']
binsx = ['binx1_df', 'binx2_df', 'binx3_df', 'binx4_df']

for eachBin in bins:
  for eachBinx in binsx:
      vars()[eachBin]=np.random.rand(4,4)
      vars()[eachBin]=pd.DataFrame()
      vars()[eachBinx]=([eachBin]==[eachBin].max()).astype(int)

我真的不知道从哪里开始将 DataFrame 的创建与随机填充相结合。您可以提供的任何建议将不胜感激:)。

python pandas loops random iteration
1个回答
0
投票

IIUC,看来你想要这样的东西:

bins = []
for _ in range(4):
    bin = np.random.rand(4,4)
    bins = bins + [pd.DataFrame((bin == bin.max(axis=0)).astype(int))]

示例输出:

[
   0  1  2  3
0  0  0  0  0
1  1  0  1  0
2  0  1  0  1
3  0  0  0  0,

   0  1  2  3
0  1  0  0  0
1  0  0  1  0
2  0  1  0  0
3  0  0  0  1,

   0  1  2  3
0  1  0  1  0
1  0  0  0  1
2  0  0  0  0
3  0  1  0  0,

   0  1  2  3
0  0  0  0  0
1  0  1  0  0
2  1  0  0  0
3  0  0  1  1
]
© www.soinside.com 2019 - 2024. All rights reserved.