【问题标题】:Python, Pandas: average every 2 rows togetherPython,Pandas:平均每 2 行一起
【发布时间】:2015-03-24 13:02:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: python pandas average rows


    【解决方案1】:

    一个快速的方法:

    >>> 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 倍,并且随着尺寸的增加变得更糟。

    【讨论】:

    • 很好,谢谢,我喜欢快速的方式。它可以很好地推广到多行平均
    • 在对n 行进行平均或求和时,您的“正确”方式或使用列表的版本变得必要,除非有更好的方法来处理任意变化的n
    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2021-10-20
    • 2017-07-20
    • 2021-11-08
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多