我有出境航班的数据,包括日期、月份、机场等信息。 我想通过每一排,并为每一个,计算从同一个机场起飞的航班数在+-15米。 我的代码似乎可以工作,但速度非常慢(在10万行上,运行大约需要一个小时)。 有没有办法提高效率? 下面是一个示例文件link 谢谢!你知道吗
time_allowance = 15
close_out = []
i=0
for index, row in df.iterrows():
i+=1
idf = df.loc[(df['Origin'] == row['Origin']) &
(df['Month'] == row['Month']) &
(df['DayofMonth'] == row['DayofMonth']) &
(df['DepTime'] < row['DepTime'] + time_allowance) &
(df['DepTime'] > row['DepTime'] - time_allowance), :]
close_out.append(len(idf))
col_name = 'close_out' + str(time_allowance)
df[col_name] = close_out
你的代码
测试:
仅仅使用
groupby
和apply
方法的一些基本改进测试性能
仅按某些字段分组,就可以看到约34%的改善。你知道吗
提高性能的下一步
主要有两种选择:
请注意,这两个选项也可以一起工作。你知道吗
提高性能
使用Numba或Ctyhon可能是good options。你知道吗
并行化
Multiprocessing module是另一种选择。另一个更高级的抽象选项是this one。你知道吗
相关问题 更多 >
编程相关推荐