我具有以下功能
condition = (df_sensor_data['Indgang 0103 Duplicate'] == 1) & (df_sensor_data['Indgang 0102 Duplicate'] == 0)
condition_2 = (df_sensor_data['Indgang 0103 Duplicate'] == 0) & (df_sensor_data['Indgang 0102 Duplicate'] >= 15)
def asdf(sensor_data, condition):
f = sensor_data.loc[condition]
filtered_data = pd.DataFrame()
for _, row in f.iterrows():
start = row['Date']
stop = row['Date'].to_pydatetime() + dt.timedelta(minutes=20)
condition = sensor_data['Date'].between(start, stop, inclusive=True)
new_data = sensor_data.loc[condition, :].copy()
filtered_data = pd.concat([filtered_data, new_data], sort=True)
filtered_data = filtered_data.sort_values('Date').reset_index(drop=True)
aggregation = { 'JOBNUM': 'first', 'Non Duplicate 0101' : 'sum' }
return filtered_data.groupby('JOBNUM').agg(aggregation)
f_data = asdf(df_sensor_data, condition)
f_data2 = asdf(df_sensor_data, condition_2)
如果我使用第一个条件运行该函数,则一切正常。 f_data数据框已创建,我可以很好地查看其内容。但是,如果我使用第二种条件运行该函数,则我的Spyder会一直循环下去。
可能是什么原因?这两个条件之间的代码没有什么不同,所以我看不出是什么导致我的程序永远循环。
PS:第一个条件获得的数据帧为160行,而第二个条件的数据帧超过6000行。这是否会使编译时间有所不同?无论哪种方式,它看起来都在发挥着应有的作用。