【发布时间】:2020-12-23 08:50:05
【问题描述】:
我想计算每个元素未来的连续增加或减少计数。
假设我有一个系列:
l=[10, 9, 8, 9, 10, 9, 10, 11, 10, 12, 10]
s=pd.Series(l)
预期的输出是:
o=[-2, -1, 2, 1, -1, 2, 1, -1, 1, -1, 0]
解释如下:
第一个元素是10,下一个是9,下一个是8,所以,它减少了2倍,所以输出是-2,第三个元素是8,它增加了2倍(下一个是9, 10),所以输出为 2。
关键点是连续的,一旦有反向数据,就应该停止向前看。
我该如何实现呢?我认为 for 循环不够好
【问题讨论】:
-
给你的东西从
np.sign(-s.diff(-1).fillna(0))开始 -
@xyhuang :这个答案有帮助吗?还是你还卡住了?
-
@Pygirl 谢谢,我认为你的回答很好,但我想知道是否有我们可以使用的矩阵方法,for 循环可能不是最快的
-
我已经更新了我的答案也给了你熊猫解决方案。这将对您有所帮助:stackoverflow.com/questions/25119524/…