我试图找到一种方法来计算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.666666663
和小于定义的4
小时分辨率。
但我陷入了以下两个问题:
- 是否可以
var 1
用 index_keep 列表中的索引查找列的行并将其替换为平均行? - 找到平均值后,如何将 for 循环设置为从头开始?