python-使用不同的聚合函数重新采样数据帧
发布时间:2022-07-02 01:46:18 225
相关标签: # node.js
我有一个如下所示的数据帧,它有一个“Stats”列,每1秒时间戳包含不同的统计值(avg、count、min、max)。
Timestamps | Location | Service | Status Code | Stats | Value |
---|---|---|---|---|---|
1656533176875 | A | s1 | 200 | count | 5000 |
1656533176875 | A | s1 | 500 | avg. | 3000 |
.... | .... | .... | .... | ... | ... |
1656533176878 | B | s2 | 504 | max. | 6000 |
现在,从这个数据帧开始,我必须对用户定义的时间间隔(例如5分钟间隔)的数据重新采样,并聚合该时间间隔的值。由于这些值代表不同的聚合,我需要为数据帧的不同部分应用不同的聚合函数。例如,如果我想对5分钟的数据重新采样,如果“Stats”是“avg”,我需要应用平均值,如果“Stats”是count,则需要应用总和。此外,分组必须按中心、服务和状态代码进行。到目前为止,我已经编写了这段代码,但无法获得预期的结果。
interval = 5
# new column for date-time object
new_df['date_time'] = pd.to_datetime(new_df['ts'], unit='ms', origin='unix')
# aggregate the values based on the new time interval
agg_df = new_df.copy()
agg_df.set_index('date_time')
resampled_df = agg_df.assign(
n_count=np.where(agg_df['stat'] == 'count'),
n_median=np.where(agg_df['stat'] == 'median'),
n_max=np.where(agg_df['stat'] == 'max'),
n_min=np.where(agg_df['stat'] == 'min'),
n_avg=np.where(agg_df['stat'] == 'avg'),
n_std=np.where(agg_df['stat'] == 'std'),
).groupby(['date_time', 'row', 'col', 'status_code'])
.resample('{}min'.format(interval),on='date_time')
.value
.agg({'n_count': sum, 'n_avg': np.mean, 'n_max': max,
'n_min': min, 'n_std': np.std,'n_median': np.median})
.reset_index()
print(resampled_df)
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报