gpt4 book ai didi

python - Pandas 滚动计数更大或更小

转载 作者:行者123 更新时间:2023-12-04 08:38:40 24 4
gpt4 key购买 nike

对此有一些答案,但我仍然无法得到正确的结果。 Countif 有多少先前的结果大于或小于当前的结果:

df = pd.DataFrame({"B": [0, 1, 2, 1, 0]})
更大的应该返回:
[0, 0, 0, 1, 3]
较小的应该返回:
 [0, 1, 2, 1, 0]

最佳答案

您可以使用 numpy 执行此操作:

In [226]: import numpy as np

In [227]: larger = np.sum(np.tril(np.subtract.outer(df.B.values,df.B.values), k=0)<0, axis=1)

In [228]: larger
Out[228]: array([0, 0, 0, 1, 3])

In [233]: smaller = np.sum(np.tril(np.subtract(df.B.values, df.B.values[:, None])) < 0, 1)

In [234]: smaller
Out[234]: array([0, 1, 2, 1, 0])
或者,如果您不想使用 numpy ,然后这样做:
In [245]: larger = [(df.B[x]<df.B[:x]).sum() for x in range(len(df.B))]

In [246]: smaller = [(df.B[x]>df.B[:x]).sum() for x in range(len(df.B))]

In [247]: larger
Out[247]: [0, 0, 0, 1, 3]

In [248]: smaller
Out[248]: [0, 1, 2, 1, 0]

关于python - Pandas 滚动计数更大或更小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64667988/

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