运行 大量 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 = ''
我有一大堆 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 第四)创建数据透视表table和数据透视图后,我从初始工作表(我添加了filter_column数据的工作表)中删除了“Date/Time”数据,如下所示: PivotTable.PivotFields("Date/Time Filter").PivotItems("0").Visible = False
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 = ''