【发布时间】:2018-11-11 03:27:21
【问题描述】:
情况:
我有一个 pandas 数据框,其中有一些关于产品生产的数据。该产品分三个阶段生产。阶段不是固定的,这意味着它们的周期(直到最后的时间)正在变化。在生产阶段,每个周期都会测量产品的温度。
请看下表:
问题:
我需要计算每个产品每个阶段的每个周期的斜率。我还需要将它添加到名为“Slope”的新列中的数据框中。您可以看到以黄色突出显示的那个是我手动添加到 Excel 文件中的。真实的数据集包含数百个参数(不仅是温度),所以实际上我需要计算很多很多列的斜率,因此我尝试定义一个函数。
我的解决方案根本不起作用:
这是我尝试过的代码,但它不起作用。我试图在给定阶段捕捉给定产品的第一行和最后一行。然后得到温度数据和这两行的差值。这样我就可以计算斜率。 到目前为止,这就是我所能想到的(我创建了另一个名为“Max_cylce_no”的列,它存储了每个阶段的最大循环量):
temp_at_start=-1
def slope(col_name):
global temp_at_start
start_cycle_no = 1
if row["Cycle"]==1:
temp_at_start =row["Temperature"]
start_row = df.index(row)
cycle_numbers = row["Max_cylce_no"]
last_cycle_row = cycle_numbers + start_row
last_temp = df.loc[last_cycle_row, "Temperature"]
以及我想应用它的方式:
df.apply(slope("Temperature"), axis=1)
不幸的是,我马上收到一个 NameError 说:name 'row' is not defined。
您能否帮助我并告诉我如何解决这个问题的正确方向。这让我很难过。 :(
提前谢谢你!
【问题讨论】:
-
如果我们想尝试我们的解决方案,提供图像作为数据源并没有真正的帮助。可以提供文本数据吗?