【发布时间】:2020-03-19 06:02:21
【问题描述】:
假设我有以下数据框:
data = {'measure_id': ['0', '1', '2', '3', '4'],
'measure_time': ['2019-11-22 22:30:08.559000', '2019-11-22 22:36:09.149000', '2019-11-22 22:36:09.149000', '2019-11-22 22:40:09.261000', '2019-11-22 22:46:10.011000'],
'pressure': [10, 9, 3, 11, 12]}
df = pd.DataFrame(data, columns=['measure_id', 'measure_time', 'pressure'])
df.set_index('measure_id', inplace=True)
print('df:\n', df)
我需要为每一行计算所有先前行的时间滚动总和,这就是区别:
measure_time of current row - measure_time of precedent row
低于某个值(例如 2 分钟),当前行包含在总和中。 这将在此处给出 rolling_sum 列:
data = {'measure_id': ['0', '1', '2', '3', '4'],
'measure_time': ['2019-11-22 22:30:08.559000', '2019-11-22 22:36:09.149000', '2019-11-22 22:36:09.149000', '2019-11-22 22:40:09.261000', '2019-11-22 22:46:10.011000'],
'pressure': [10, 9, 3, 11, 12],
'rolling_sum':[10, 9, 12, 11, 12]}
df = pd.DataFrame(data, columns=['measure_id', 'measure_time', 'pressure', 'rolling_sum'])
df.set_index('measure_id', inplace=True)
print('df:\n', df)
现在看来 Pandas 可以处理带偏移量的滚动了 Pandas: rolling mean by time interval ,但我无法让这个解决方案在这里工作(可能是因为非时间索引)。
【问题讨论】: