我有一个pandas DataFrame,其中一列包含以下元素:
[2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10],
是否有一个python函数可以检测到该列表中2.6到10的突然变化?我已经阅读了一点,R可以做到这一点。 python中有类似的功能吗?
答案 0 :(得分:9)
IIUC您可以使用pct_change
来查找邻居之间的差异,然后与您的限制进行比较(无论它是什么):
s = pd.Series([2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10])
In [105]: s.pct_change()
Out[105]:
0 NaN
1 0.250000
2 0.200000
3 -0.333333
4 0.300000
5 2.846154
6 0.030000
7 -0.029126
8 0.010000
9 0.019802
10 -0.029126
dtype: float64
In [107]: s[s.pct_change() > 1]
Out[107]:
5 10
dtype: float64
In [117]: s[s.pct_change() > 1].index.tolist()
Out[117]: [5]