Python 数据帧查找给定条件下的第一个和最后一个元素并计算斜率

Python 数据帧查找给定条件下的第一个和最后一个元素并计算斜率,python,pandas,dataframe,Python,Pandas,Dataframe,情况: 我有一个熊猫数据框,其中有一些关于产品生产的数据。该产品分三个阶段生产。阶段不是固定的,这意味着它们的周期(直到最后的时间)在变化。在生产阶段,在每个周期测量产品的温度 请参阅下表: 问题是: 我需要计算每个产品每个阶段每个周期的斜率。我还需要将其添加到名为“Slope”的新列中的数据帧中。您可以看到的那个用黄色突出显示的是我在excel文件中手动添加的。真实的数据集包含数百个参数(不仅仅是温度),所以实际上我需要计算很多很多列的斜率,因此我尝试定义一个函数 我的解决方案根本不起作用:

情况:

我有一个熊猫数据框,其中有一些关于产品生产的数据。该产品分三个阶段生产。阶段不是固定的,这意味着它们的周期(直到最后的时间)在变化。在生产阶段,在每个周期测量产品的温度

请参阅下表:

问题是:

我需要计算每个产品每个阶段每个周期的斜率。我还需要将其添加到名为“Slope”的新列中的数据帧中。您可以看到的那个用黄色突出显示的是我在excel文件中手动添加的。真实的数据集包含数百个参数(不仅仅是温度),所以实际上我需要计算很多很多列的斜率,因此我尝试定义一个函数

我的解决方案根本不起作用:

这是我尝试过的代码,但不起作用。我试图抓住给定产品的第一行和最后一行,在给定的阶段。然后得到温度数据和这两行的差值。这样我可以计算出斜率。 到目前为止,我只能想到这一点(我创建了另一个名为“Max_cylce_no”的专栏,它存储每个阶段的最大循环量):

我想用的方法是:

df.apply(slope("Temperature"), axis=1)
不幸的是,我马上就收到一个NameError,它说:没有定义名称“row”

你能帮助我,告诉我如何解决这个问题的正确方向吗。这让我很难过(

提前谢谢!

我相信您需要用第一个值减去最后一个值,再除以长度:

f = lambda x: (x.iloc[-1] - x.iloc[0]) / len(x)
df['new'] = df.groupby(['Product_no','Phase_no'])['Temperature'].transform(f)

如果我们想尝试我们的解决方案,提供图像作为数据源并不是很有帮助。你能以文本形式提供数据吗?很好,我相信这是所需的输出。你太棒了!非常感谢!它很有魅力!
f = lambda x: (x.iloc[-1] - x.iloc[0]) / len(x)
df['new'] = df.groupby(['Product_no','Phase_no'])['Temperature'].transform(f)