Python 如何计算坡度b/w 2点?

Python 如何计算坡度b/w 2点?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个df,如下所示: ContextID EscRF_P2P_Volt_V StepID Time_Elapsed 7289972 12.45421 1 0 7289972 12.45421 1 0.055 7289972 12.45421 2 0.156 7289972 12.45421 2 0.487 7289972 12.45421 2 1.477 7289972 12.45421 2 2.477 7289972

我有一个
df
,如下所示:

ContextID   EscRF_P2P_Volt_V    StepID  Time_Elapsed
7289972 12.45421    1   0
7289972 12.45421    1   0.055
7289972 12.45421    2   0.156
7289972 12.45421    2   0.487
7289972 12.45421    2   1.477
7289972 12.45421    2   2.477
7289972 13.18681    2   3.477
7289972 12.45421    2   4.487
7289972 12.45421    2   5.993
7289972 12.45421    2   6.545
7289972 12.45421    5   7.983
7289972 12.45421    5   8.993
7289972 13.18681    5   9.993
7289972 13.18681    5   10.393
7289972 12.45421    5   11.993
7289972 12.45421    5   13.093
7289972 12.45421    5   13.384
7289972 12.45421    5   14.388
7289972 12.45421    5   15.386
7289972 12.45421    5   16.386
7289972 12.45421    5   17.396
7289972 12.45421    5   18.406
7289972 12.45421    5   19.396
7289972 11.72161    5   20.396
7289972 12.45421    5   21.396
7289972 12.45421    7   22.386
7289972 12.45421    7   23.456
7289972 13.18681    7   24.404
7289972 12.45421    12  25.443
7289972 13.18681    12  26.443
7289972 11.72161    12  27.443
7289972 12.45421    12  28.453
7289972 13.18681    12  29.443
7289972 12.45421    12  30.443
7289972 12.45421    12  31.443
7289972 12.45421    15  32.472
7289972 27.10623    15  33.444
7289972 27.10623    16  34.443
7289972 22.71062    16  35.443
7289972 22.71062    17  36.443
7289972 622.7106    19  37.503
7289972 622.7106    19  38.513
7289972 622.7106    19  39.503
7289972 622.7106    19  40.503
7289972 622.7106    19  41.503
7289972 622.7106    19  42.503
7289972 622.7106    19  43.503
7289972 622.7106    19  44.503
7289972 622.7106    19  45.532
7289972 622.7106    19  46.502
7289972 622.7106    19  47.501
7289972 622.7106    19  48.501
7289972 622.7106    19  49.501
7289972 622.7106    19  50.501
我想做的是计算
经过的时间范围
并将其分成10部分,然后计算每个部分的斜率,
x
经过的时间
y
EscRF\u P2P\u Volt\u V

我知道我可以将坡度定义为:

def slope(x1, y1, x2, y2):
    m = (y2-y1)/(x2-x1)
    return m
但我不能正确地实施它

关于如何做到这一点,有什么建议吗

输出:

0-5之间的第一个间隔的输出必须如下所示:

slope = (12.45421-12.45421)/(5-0)
在5-10之间的第二个间隔

slope = (13.18681-12.45421)/(10-5)
等等


如果在经过的时间中没有确切的值,就像没有
10
,那么在这种情况下,我们在
9.993

处取
EscRF\u P2P\u Volt\u V
值,您可以添加另一个包含10个组ID的列,然后使用
groupby
并计算每组中EscRF\u P2P\u Volt\u V列的最后一个负数除以所用时间列的最后一个负数:

df['grpNo'] = df.Time_Elapsed // 5.0502
如果你有一个正常的计数指数从0。。。n-1(但你没有发布):

但请注意,它们不会导致相同的分组,因此坡度的结果也会有所不同。由您来实现您希望使用的分组

基于索引的分组结果

# grpNo
# 0.0      0.000000
# 1.0     -0.162583
# 2.0      0.000000
# 3.0      0.000000
# 4.0      0.146286
# 5.0      0.183150
# 6.0      3.663005
# 7.0    118.577071
# 8.0      0.000000
# 9.0      0.000000
# dtype: float64
比较不同分组的分组规模:

   Index based  Time based
0  6            8
1  5            5
2  6            5
3  5            5
4  6            5
5  5            5
6  5            5
7  6            5
8  5            5
9  5            6

你能给出你期望的输出吗?我加了它为什么你有重复的值共享相同的
StepID
?这是一个从半导体制造机器获得的传感器数据。但是
StepID
在这种情况下并不重要@orlpYou应该更精确地描述您想要的内容。您有53行,您希望如何将其拆分为10个部分?StepID重要吗?如果是,在一个StepID内选择哪个电压值。。。?等等……嘿,它给了我以下错误:
AttributeError:'DataFrameGroupBy'对象没有属性'EscRF\u P2P\u Volt\u V'
Hmm,也许你可以尝试索引符号,例如
grpd['EscRF\u P2P\u Volt\u V']。last()
对不起,我的错。它起作用了。我犯了个错误。谢谢你的帮助和建议
# grpNo
# 0.0      0.000000
# 1.0     -0.162583
# 2.0      0.000000
# 3.0      0.000000
# 4.0      0.146286
# 5.0      0.183150
# 6.0      3.663005
# 7.0    118.577071
# 8.0      0.000000
# 9.0      0.000000
# dtype: float64
   Index based  Time based
0  6            8
1  5            5
2  6            5
3  5            5
4  6            5
5  5            5
6  5            5
7  6            5
8  5            5
9  5            6