【发布时间】:2020-10-03 04:48:33
【问题描述】:
我正在尝试找到一种方法来计算增量时间累积总和小于某个分辨率的行的列 var 1 的平均值。 delta 是以小时为单位的时间。以下是数据示例:
|id |label|delta |var 1|
|------|-----|-----------|-----|
|23_100|0 |2.533333333|5 |
|23_100|0 |1.133333333| |
|23_100|0 |0.733333333|3 |
|23_100|0 |0.7 |7 |
|23_100|0 |1.033333333| |
|23_100|0 |0.366666667|9 |
|23_100|0 |0.916666667| |
|23_100|0 |0.383333333|2 |
|23_100|0 |0.066666667| |
|23_100|0 |2.883333333|1 |
|23_100|0 |0.15 |5 |
|23_100|0 |0.233333333|3 |
|23_100|0 |1.35 | |
|23_100|0 |0.75 |8 |
|23_100|0 |2.133333333|7 |
为了实现这一点,我有以下想法:
cumsum_time = 0
index_keep = []
resolution = 4 # 4 hours
for index, row in df.iterrows():
cumsum_time = cumsum_time + row['delta']
index_keep.append(index)
if cumsum_time <= resolution:
print(cumsum_time)
print(index_keep)
# Find the average of the column var 1 for the rows in the index_keep list
第一个 for 循环以 index_keep = [0, 1] 停止,这是正确的。由于2.533333333 + 1.13333333 = 3.666666663and 小于4 小时的定义分辨率。
但我陷入了以下两个问题:
- 是否可以使用 index_keep 列表中的索引找到并替换列
var 1的行以及平均行? - 如何将 for 循环设置为在找到平均值后从头开始?
【问题讨论】:
标签: python pandas time-series moving-average