运行 大量 python 脚本无需迭代的有效方法

Efficient way to run a large list of python script without iteration

我有一大堆 python 脚本,如下所示:

My_list=['PivotTable.PivotFields("time").PivotItems(item).Visible=Boolean'] 

其中 item=1,2,...,n & Boolean= True or False

我用了下面几行代码,但是n=1000000,花了很多时间。

for item in range(n):
   exec(My_list[item])

上面的代码,根据 excel 文件中的输入时间间隔过滤一个主元 table。

我通过执行以下步骤解决了这个问题。我简单解释一下这些步骤,也许有人觉得有用: 首先)我没有过滤“时间”数据,而是在 pandas 中创建了一个名为“filter_column” 的数组 (n×1),其元素是 [False, True],

第二)然后,我通过以下代码将数据添加到 excel 文件(称为“Date/Time”)的最后一列:

ws = wb.Worksheets(getSheetName[sheet_index])
allData = ws.UsedRange
getNumCols = allData.Columns.Count
ws.Range(ws.Cells(1, getNumCols), ws.Cells(1, getNumCols)).Value = 'Date/Time Filter'

getNumRows = allData.Rows.Count
First_cell = ws.Cells(2, getNumCols)
Last_cell = ws.Cells(getNumRows, getNumCols)
SelectedRange = ws.Range(First_cell, Last_cell)
SelectedRange.Value = filter_column_df.values.tolist()

第三)我通过它的代理变量“Date/Time”数据过滤了“时间”数据。有 m

 PivotTable.PivotFields("Date/Time Filter").PivotItems("0").Visible = False

第四)创建数据透视表table和数据透视图后,我从初始工作表(我添加了filter_column数据的工作表)中删除了“Date/Time”数据,如下所示:

  wb.active = sheet_index+1
  First_cell = ws.Cells(1, getNumCols)
  Last_cell = ws.Cells(getNumRows, getNumCols)
  SelectedRange = ws.Range(First_cell, Last_cell)
  SelectedRange.Value = ''