优化python代码

时间:2016-10-14 13:05:01

标签: python-2.7 pandas optimization

我在python中编写了一个带有三个循环的函数,这很耗时。是否可以通过其他方式在更短的时间内完成相同的操作。

以下是您可以在最后运行的代码和示例数据

#Expand files to minute-level
def expand_b34(data):
final_list = []
df_columns = list(data.columns.tolist())
for i in range(len(data)):
    #print i
    row_list = np.repeat(data.values[i][np.newaxis,:], data['DURATION'].loc[i], axis=0).tolist()
    start_end_list = range(data['START'].loc[i], data['END_MINUTE'].loc[i])
    for j in range(len(row_list)):
        row_list[j].extend([start_end_list[j]])
    for k in row_list:
        final_list.append(k)

data = pd.DataFrame(final_list)
data.columns = df_columns + ['START_MINUTE']
data = data.drop(['START','END_MINUTE'], axis=1)

return data               

df = expand_b34(test)

Sample data
date    Id  LD  GOOD_AP_ORIG    ap_station  JULIAN_DAY  START   DURATION    END_MINUTE  PLDS    PL  PLT PLAY
16080   4012007 1   G   5000    16081   0   60  60  0   0   0    
16080   4012007 1   G   5000    16081   60  60  120 0   0   0    
16080   4012007 1   G   5000    16081   120 60  180 0   0   0    
16080   4012007 1   G   5000    16080   180 60  240 0   0   0    
16080   4012007 1   G   5000    16080   240 120 360 0   0   0    

Attached is the sample data for your reference

代码工作流程:首先它将计算" START"之间的差异。和" END_MINUTE"然后扩展对差异的观察。因此,如果差异为10,则将为同一观察生成10行观察,这些观察具有相同的数据,除了" START_MINUTE"变量。 START_MINUTE从0开始(因为对于特定的观察START = 0)并以9.结束。对于单次观察,循环已经创建了10个重复观察,除了开始分钟变量,其从0到9变化。

有人可以通过优化代码帮助进行相同的观察扩展

0 个答案:

没有答案