我需要创建一个 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 的创建与随机填充相结合。您可以提供的任何建议将不胜感激:)。
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
]