for循环花费太长时间来生成/导出Python中的输出

时间:2016-12-27 19:35:21

标签: python pandas if-statement for-loop output

这个问题是我今天早些时候提出的上一个问题for loop taking too long to produce output的延续。正如我在一条评论中告诉我的那样,我使用pandas来代替xlrd来阅读excel文件。这是我写的程序 -

   import pandas as pd
   import numpy as np

   no_of_columns = 10000

   Book1 = pd.read_excel("D:\Python\Book1.xlsx",header=None,name=range(no_of_columns))
   Book2 = pd.read_excel("D:\Python\Book2.xlsx",header=None,name=range(no_of_columns))
   Book3 = pd.read_excel("D:\Python\Book3.xlsx",header=None,name=range(no_of_columns))


   for i in range(1,11001):
      for j in range(0,10000):
         if Book1.iloc[i,j] == 100 and Book2.iloc[i,j] == 150 and Book3.iloc[i,j] == 150:
            print 1
         else:
            print 0

但这也没有解决我遇到的问题。该程序仍在运行(已经有5个小时),我在目录中导出的文本输出仍然是0字节大小。再说一次,这个程序有什么问题吗?为什么我从执行开始就得到一个大小相同的文件?我在 R 上运行了这样的大型循环,但每次我开始以文本或excel格式导出输出时,我在我的目录中得到一个文件,随着循环的进行,其大小会继续增加。那么为什么这不会发生呢?我该怎么办?

1 个答案:

答案 0 :(得分:1)

IIUC:

假设所有书籍大小相同

(Book1.eq(100) & Book2.eq(150) & Book3.eq(150)) * 1

对评论的回应:

我也是为了美学而写的。为了复制你已完成的工作并将结果发送到csv,我执行此操作:

(Book1.eq(100) & Book2.eq(150) & Book3.eq(150)).stack().mul(1) \
    .to_csv('filename.csv', header=False, index=False)