Python字典:每个索引中都有大量数据帧值的简单划分

2024-06-28 19:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有两个字典,每个索引(0~9)由10个3000乘3000的数据帧组成。Dataframe中的所有值都是int,我只想简单地除以每个值。下面的第一个循环只是将index=column值替换为0,我个人并不认为这个循环会减慢进程。第二个循环是运行时的问题(我相信),因为有太多的数据要计算。请看下面的代码。你知道吗

for a in range(10):
    for aa in range(len(dict_cat4[a])):
        dict_cat4[a].iloc[aa,aa] = 0
        dict_amt4[a].iloc[aa,aa] = 0
for b in range(10):
    temp_df3 = dict_amt4[b] / dict_cat4[b] 
    temp_df3.replace(np.nan,0.0,inplace=True)
    dict_div4[b] = temp_df3

一个问题是,由于数据集非常大,这个过程要花很长时间来计算这个循环。有没有一种有效的方法将我的代码转换成其他循环?现在已经60多分钟了,还在计算。请告诉我!谢谢

---------------编辑----------------

下面是第一个循环的输入和输出示例

Output:dict_amt4[0]
       DNA      Cat2                                    ...     Func
       Item     A   B   C   D   E   F   F   H   I   J   ...     ZDF11  ZDF12  ZDF13  ZDF14  ZDF15   ZDF16   ZDF17  ZDF18   ZDF19   ZDF20
DNA   Item
Cat2  A         0   62  174 0   4   46  46  7   2   15  ...     4   17  45  1   2   0   0   0   0   0
      B         62  0   27  0   0   12  61  2   4   11  ...     6   9   14  1   0   0   0   0   0   0
      C         174 27  0   0   0   13  22  5   2   4   ...     0   2   8   0   0   0   0   0   0   0
      D         0   0   0   0   0   0   0   0   0   0   ...     0   0   0   0   0   0   0   0   0   0
      E         4   0   0   0   0   10  57  33  4   5   ...     0   0   0   0   0   0   2   0   0   0
      F         46  12  13  0   10  0   4   5   0   0   ...     0   33  2   0   0   0   2   3   0   0
.............

第二个回路在下面

Input:dict_amt4[0]
       DNA      Cat2                                    ...     Func
       Item     A   B   C   D   E   F   F   H   I   J   ...     ZDF11  ZDF12  ZDF13  ZDF14  ZDF15   ZDF16   ZDF17  ZDF18   ZDF19   ZDF20
DNA   Item
Cat2  A         0   186 174 0   4   46  46  14  2   15  ...     4   17  45  1   2   0   0   0   0   0
      B         186 0   27  0   0   12  61  2   4   11  ...     6   9   14  1   0   0   0   0   0   0
      C         174 27  0   0   0   130 22  5   2   4   ...     0   2   8   0   0   0   0   0   0   0
      D         0   0   0   0   0   0   0   0   0   0   ...     0   0   0   0   0   0   0   0   0   0
      E         4   0   0   0   0   10  57  33  4   5   ...     0   0   0   0   0   0   2   0   0   0
      F         46  12  13  0   10  0   4   5   0   0   ...     0   33  2   0   0   0   2   3   0   0
.............


Input:dict_cat4[0]
       DNA      Cat2                                    ...     Func
       Item     A   B   C   D   E   F   F   H   I   J   ...     ZDF11  ZDF12  ZDF13  ZDF14  ZDF15   ZDF16   ZDF17  ZDF18   ZDF19   ZDF20
DNA   Item
Cat2  A         0   62  174 0   4   46  46  7   2   15  ...     4   17  45  1   2   0   0   0   0   0
      B         62  0   27  0   0   12  61  2   4   11  ...     6   9   14  1   0   0   0   0   0   0
      C         174 27  0   0   0   13  22  5   2   4   ...     0   2   8   0   0   0   0   0   0   0
      D         0   0   0   0   0   0   0   0   0   0   ...     0   0   0   0   0   0   0   0   0   0
      E         4   0   0   0   0   10  57  33  4   5   ...     0   0   0   0   0   0   2   0   0   0
      F         46  12  13  0   10  0   4   5   0   0   ...     0   33  2   0   0   0   2   3   0   0
.............


Output:dict_div4[0]
       DNA      Cat2                                    ...     Func
       Item     A   B   C   D   E   F   F   H   I   J   ...     ZDF11  ZDF12  ZDF13  ZDF14  ZDF15   ZDF16   ZDF17  ZDF18   ZDF19   ZDF20
DNA   Item
Cat2  A         0   3   1   0   1   1   1   2   1   1   ...     1   1   1   1   1   0   0   0   0   0
      B         3   0   1   0   0   1   1   1   1   1   ...     1   1   1   1   0   0   0   0   0   0
      C         1   1   0   0   0   10  1   1   1   1   ...     0   1   1   0   0   0   0   0   0   0
      D         0   0   0   0   0   0   0   0   0   0   ...     0   0   0   0   0   0   0   0   0   0
      E         1   0   0   0   0   1   1   1   1   1   ...     0   0   0   0   0   0   1   0   0   0
      F         1   1   1   0   1   0   1   1   0   0   ...     0   1   1   0   0   0   1   1   0   0
.............

我只是手工制作了一个样本数据,所以请忽略输入错误。如您所见,第一个循环只是转换一个dict\u cat4[0].iloc[i,i]=0的值。第二个循环是将dict\u amt[0]中的所有值除以dict\u cat[0]。希望这更有意义。你知道吗


Tags: 数据itemdictdnaaafunccat2cat4