这个问题是上一个问题的延续 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 格式导出输出时,我的目录中都会得到一个文件,其大小会随着循环的进行而不断增加。那么为什么这里没有发生这种情况呢?我应该在这里做什么?
最佳答案
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)
关于python - for 循环在 Python 中生成/导出输出的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351153/