python - DataFrame中n个连续值的最大平均值
问题描述
我想在 DataFrame 中找到 n 个连续值的最大平均值。
import pandas as pd
list1 = [120, 130, 135, 140, 170, 131, 131, 151, 181, 191, 200, 210, 220, 170, 160, 151, 120, 140, 170, 173]
list2 = [80, 81, 82, 82, 82, 83, 84, 84, 85, 85, 85, 86, 87, 88, 89, 90, 90, 90, 91, 91 ]
df = pd.DataFrame(zip(list1, list2), columns=['value1', 'value2'])
df['interval'] = 0
interval_duration = 3 # set interval duration
number_of_intervals = 4 # set number of intervals
# I found only a way with for loop:
for x in range(1, number_of_intervals + 1):
max_average_interval = sum(df['value1'][0 : interval_duration]) / interval_duration
item_max = 0
for item in range(len(df['value1']) - interval_duration + 1):
if sum(df['interval'].loc[item : item + interval_duration - 1]) == 0:
if max_average_interval < sum(df['value1'][item : item + interval_duration]) / interval_duration:
max_average_interval = sum(df['value1'][item : item + interval_duration]) / interval_duration
item_max = item
df['interval'].loc[item_max : item_max + interval_duration - 1] = x
结果:
value1 value2 interval
0 120 80 0
1 130 81 0
2 135 82 0
3 140 82 0
4 170 82 0
5 131 83 0
6 131 84 0
7 151 84 2
8 181 85 2
9 191 85 2
10 200 85 1
11 210 86 1
12 220 87 1
13 170 88 4
14 160 89 4
15 151 90 4
16 120 90 0
17 140 90 3
18 170 91 3
19 173 91 3
其中在间隔列中: 1 - 连续值的第一个最大间隔 2 - 连续值的第二个最大间隔,依此类推。
问题。如果有更有效的方法来做到这一点?这很重要,因为我可以有成千上万个值。
更新
又更新了。。
解决方案
推荐阅读
- angular - ROOT_EFFECTS_INIT 永远不会被调用
- django - 更改 Django Rest Framework 中单个方法的序列化程序类
- f# - 如何在 Fulma F# 中提取 Input 对象的值?
- excel - 使用切片器时 Excel 颜色变化
- azure - Azure FormRecognizer 在日本东部不起作用?
- google-cloud-platform - 使用现有基础架构为项目生成部署
- ios - iOS Appstore 应用程序中有 Dylibs 吗?
- javascript - 如何在表单验证中一次测试所有输入,防止默认提交并以最佳方式在输入上添加类
- python - 在 Python3 中,如何使用理解更新字典
- javascript - 在两个输入Javascript之间生成随机整数