python - for 循环在 Python 中生成/导出输出的时间太长

标签 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 格式导出输出时,我的目录中都会得到一个文件,其大小会随着循环的进行而不断增加。那么为什么这里没有发生这种情况呢?我应该在这里做什么?

最佳答案

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/

相关文章:

python - 使用 Docker 设置 python 开发环境(在 vscode 中进行 linting 和代码完成)

python - 在 matplotlib 中使用条件标记

python - 在多索引 pandas DataFrame 中打开 'pretty viewing'

c++ - 嵌套的 if 语句和 "&&"运算符

javascript - 将你的分数与 jQuery 中的三个范围进行比较的最短方法

python - OrderedDict 仅打算更新一个键值对时更新所有键值对

python - 检查矩形坐标是否与 python 相交

python - 合并来自不同文件夹的文件

python - Pandas DataFrame 显示形状或数据类型缓慢

iphone - 语义问题 : Why does this warning appear here