概念:计算两个时间之间的转换次数,并将计数作为列添加到数据框中。开始时间和结束时间是数据框中的前两列
采样日期
Time_Completed Time_of_Fetch Base Number of event
03-06-2022 14:56 03-06-2022 14:14 Q112 12
03-06-2022 14:54 03-06-2022 14:14 Q112 11
03-06-2022 14:51 03-06-2022 14:18 Q112 9
03-06-2022 14:52 03-06-2022 14:21 Q112 8
03-06-2022 15:07 03-06-2022 14:25 Q112 8
03-06-2022 14:54 03-06-2022 14:25 Q112 7
03-06-2022 14:50 03-06-2022 14:25 Q112 5
03-06-2022 15:11 03-06-2022 14:27 Q112 5
03-06-2022 15:17 03-06-2022 14:29 Q112 4
03-06-2022 15:19 03-06-2022 14:47 Q112 3
03-06-2022 15:18 03-06-2022 14:49 Q112 2
03-06-2022 15:21 03-06-2022 14:54 Q112 1
03-06-2022 15:20 03-06-2022 14:58 Q106 2
03-06-2022 15:23 03-06-2022 14:59 Q106 1
下面是我用来获取Number of Count
列的代码
result = []
for i in range(0, len(df)):
result.append(df[(df['Time_of_Fetch'] >= df.iloc[i]['Time_of_Fetch']) & (df['Time_of_Fetch'] < df.iloc[i]['Time_Completed']) & (df['Base'] == df.iloc[i]['Base'])].count()['Base'])
df['Check_value'] = result
然而,当处理大数据集时,这种方法需要花费一些时间来完成计算
我尝试过使用apply()
和lambda()
来减少运行时间,但仍然无法减少运行时间
下面是我已经厌倦的代码
df_108.assign = df_108.apply((lambda row :df_108[(df_108['Time_of_Fetch'] >= df_108['Time_of_Fetch'])
& (df_108['Time_of_Fetch'] < df_108['Time_Completed'])& (df_108['Base'] == df_108['Base'])].count()['Base']),axis = 1)
如何重写以减少运行时
1条答案
按热度按时间fafcakar1#
可以使用内部日期时间差运算:
生成的输出: