首页 > 解决方案 > 如何找到熊猫数据框值的第一次显着差异?

问题描述

Pandas DataFrame中,如何找到两个相邻索引处的两个值之间第一次出现较大差异?

例如,如果我有一个带有 data的DataFrameA[1, 1.1, 1.2, 1.3, 1.4, 1.5, 7, 7.1, 7.2, 15, 15.1],我希望索引保持 1.5,即 5。在下面的代码中,它会给我保持 7.2 的索引,因为15 - 7.2 > 7 - 1.5.

idx = df['A'].diff().idxmax() - 1

我应该如何解决这个问题,以便获得第一个“大差异”出现的索引?

标签: pythonpandasnumpydataframe

解决方案


一个想法是通过Series.quantile一系列差异与差异的变化顺序-1和绝对值进行过滤,最后获得第一个索引:

df = pd.DataFrame({'A':[1, 1.1, 1.2, 1.3, 1.4, 1.5, 7, 7.1, 7.2, 15, 15.1]})


x = df['A'].diff(-1) .abs()
print (x)
0     0.1
1     0.1
2     0.1
3     0.1
4     0.1
5     5.5
6     0.1
7     0.1
8     7.8
9     0.1
10    NaN
Name: A, dtype: float64

idx = x.index[x >= x.quantile(.75)]
print (idx)
Int64Index([5, 7, 8], dtype='int64')

print (idx[0])
5

推荐阅读