首页 > 解决方案 > 循环遍历一列需要永远

问题描述

我有以下功能

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 行。这会在编译时间之间产生差异吗?无论哪种方式,它看起来仍然比它应该拥有的更多。

标签: pythonfor-loopspyder

解决方案


推荐阅读