python - 如何找到熊猫数据框值的第一次显着差异?
问题描述
在Pandas DataFrame中,如何找到两个相邻索引处的两个值之间第一次出现较大差异?
例如,如果我有一个带有 data的DataFrame列A[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
我应该如何解决这个问题,以便获得第一个“大差异”出现的索引?
解决方案
一个想法是通过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
推荐阅读
- ruby - 搜索文件是否存在
- flutter - 如何获取点击的 TextSpan 的坐标?
- node.js - 任务从未定义:默认,要列出可用任务,请尝试运行:gulp --tasks
- java - String - 为什么在这两种情况下都有不同的返回值
- ios - 无论语言环境/isDaylightSavingTime/时区如何,DateFormatter 都会为某些用户返回 nil 日期
- java - 如何对字母和数字进行排序
- json - 如何使用 perl 在 JSON 中查找键并通过层次结构返回其路径
- javascript - How to find third values comparing two values in javascript?
- android - Chrome 操作系统:在平板电脑模式下,从浮动键盘切换到普通键盘无法正常工作
- ios - 如何在问卷中制作嵌套问题?我很困惑