python , Pandas : average every 2 rows together

标签 python pandas average rows

非常基本的问题,但想知道:

在 pandas Dataframe 中将每 2 行平均在一起的“正确”方法是什么,因此最终只有一半的行数?

请注意,这与 rolling_mean 不同,因为它减少了条目数。

最佳答案

一个快速的方法:

>>> s = pd.Series(range(10))
>>> s
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
>>> ((s + s.shift(-1)) / 2)[::2]
0    0.5
2    2.5
4    4.5
6    6.5
8    8.5

我想“正确的方式”应该是这样的:

>> a = s.index.values
>>> idx = np.array([a, a]).T.flatten()[:len(a)]
>>> idx
[0 0 1 1 2 2 3 3 4 4]
>>> s.groupby(idx).mean()
0    0.5
2    2.5
4    4.5
6    6.5
8    8.5

但它会慢 2 倍左右,并且随着大小的增加而变得更糟。

关于 python , Pandas : average every 2 rows together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144655/

相关文章:

python - 如何从 sqlalchemy 中的 jsonb 列的嵌套列表中返回特定的字典键

python - 字符串转换为干净的 int 列表

python - 使用 OpenCV 进行轮廓识别

python - 用于检查正在运行的任务的 Celery 快速事件循环?

python - 从包含名称+日期的字符串中提取日期

python - 使用 NumPy 平均符号标准化数据段的最快方法?

Python、Pandas、XML - 根据长度分割 XML 元素

python - 通过使用 pandas 在 python 中使用特定列来获取数据框中的过滤结果

lisp - 在 Lisp 中计算平均绩点和类(class)平均水平

MYsql - 获取多行的开始时间和停止时间之间的平均时间