gpt4 book ai didi

python - 利用 Pandas 内置进行聚合

转载 作者:行者123 更新时间:2023-11-30 22:35:37 24 4
gpt4 key购买 nike

Pandas(或 NumPy?)是否有一些内置聚合可以用来优化下面标有 *** 的行?

    >>> import numpy as np
>>> import pandas as pd
>>>
>>> df = pd.DataFrame({'A':[1,21,4,5,3,3,5,653,2], 'B':[1,2,3,4,5,6,7,8,9]})
>>> steps = 3
>>>
>>> values = df.iloc[:,0]
>>> current = values[-steps:]
>>> old = values[:-steps]
*** >>> mean = np.array([old[i::steps].mean() for i in range(steps)]) ***
>>> df.iloc[-steps:,0] = current - mean
>>> df1 = df.iloc[-steps:]
>>> df1
A B
6 2.0 7
7 641.0 8
8 -1.5 9

最佳答案

我们可以以向量化的方式计算平均值,由于for循环,这似乎是瓶颈,就像这样 -

mean = old.values.reshape(-1,steps).mean(axis=0)

对于数组大小可能无法被步数整除的情况,我们可以使用np.bincount -

ids = np.arange(a.size)%steps
mean= np.bincount(ids, a)/np.bincount(ids)

关于python - 利用 Pandas 内置进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com