Pandas调用pandas.lib.scalar_compare很多,使脚本变慢

时间:2016-12-28 15:54:22

标签: python pandas

我正在为优化问题编写一个MPS文件,并且有38个时间段,每个桶必须为10000个项目写入质量平衡约束。

我目前正在双循环中执行此操作,正如预期的那样非常慢。但是,大部分时间都花在了pandas.lib.scalar_compare上。你们有什么想法我可以阻止这种情况并优化我的代码吗?

这些是我使用的一些pandas过滤器,花费了大量时间:

capacity=CAP[(CAP.ResourceName==i) & (CAP.StartDate==bucket[t])].AvailableCapacity.values[0]
stock=STOCK[(STOCK.StartDate==bucket2[t])&(STOCK.PIFrom==ITEM.PIName[j])&(STOCK.SiteFrom==ITEM.PISite[j])].values[0]

CAP.iloc[0]
Enterprise              STRIPMLE
ResourceName                LL11
Site                        IJMP
StartDate             01/07/2018
EndDate               01/08/2018
AvailableCapacity            583
OvertimeCapacityI              0
OvertimeCapacityII             0
ProtectiveCapacity           NaN
OvertimeCostI                  0
OvertimeCostII                 0
SYS_TYPE                     NaN
Name: 0, dtype: object

以下是最耗时的电话。这仅适用于20个项目,应为10000个。

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   442374    5.244    0.000    9.569    0.000 pulp.py:255(__init__)
        9    5.206    0.578    5.206    0.578 {method 'read' of 'pandas.parser.TextReader' objects}
      6/4    4.993    0.832   19.602    4.901 pulp.py:294(dicts)
     1735    4.307    0.002    4.307    0.002 {pandas.lib.scalar_compare}
   442374    3.428    0.000    3.897    0.000 arrayprint.py:340(array2string)
   442374    2.041    0.000    4.325    0.000 pulp.py:172(__init__)
   442374    1.958    0.000    2.166    0.000 pulp.py:163(setName)
   442374    1.141    0.000    5.038    0.000 numeric.py:1835(array_str)

0 个答案:

没有答案