首页 > 解决方案 > 迭代 Dataframe 并为特定符号每 5 分钟计算一次最小值

问题描述

dataframe
symbol,Time,Day,x_value,y_value
aaa,2018-09-21 11:01:00,saturday,1,2
aaa,2018-09-21 11:02:00,saturday,2,5
aaa,2018-09-21 11:03:00,saturday,5,1
aaa,2018-09-21 11:04:00,saturday,7,3
aaa,2018-09-21 11:05:00,saturday,6,4
aaa,2018-09-21 11:06:00,saturday,2,2
aaa,2018-09-21 11:07:00,saturday,3,5
aaa,2018-09-21 11:08:00,saturday,2,2
aaa,2018-09-21 11:09:00,saturday,2,3
aaa,2018-09-21 11:09:15,saturday,2,5
aaa,2018-09-21 11:10:00,saturday,2,3

output
symbol,day,start,end,count,x_value,y_value
aaa,saturday,11:01:00,11:10:00,5,13,15

说明:迭代数据帧并为特定符号每 5 分钟计算一次 x_value 和 y_value 的最小值,并将该数据帧转换为 csv。

标签: python-3.xpandas

解决方案


使用groupbypd.Grouper

df['Time'] = pd.to_datetime(df['Time'])
df_new = df.groupby([pd.Grouper(key = 'Time', freq='5 min'), 'symbol', 'Day'])
                                              .agg({'x_value': 'min', 'y_value': 'min'})
                                              .reset_index()
df_new['Time_End'] = df_new['Time'].shift(-1) - pd.Timedelta('1s')
df_new

            Time        symbol  Day     x_value y_value  Time_End
0   2018-09-21 11:00:00 aaa   saturday  1         1      2018-09-21 11:04:59
1   2018-09-21 11:05:00 aaa   saturday  2         2      2018-09-21 11:09:59
2   2018-09-21 11:10:00 aaa   saturday  2         3         NaT

推荐阅读