在python df中为变量分配运行编号

时间:2019-04-07 15:40:06

标签: python python-3.x pandas dataframe

评估校准数据

对于系统校准,我需要比较参考('ref')和测试('test')变量。 df看起来像这样(df中有> 3000个变量的部分):

    df=pd.read_csv(file)
    df
Time    ref     test
sec     Q       Q
1       nan     nan
2       nan     nan
3       5,00    4,89
4       5,08    5,00
5       4,93    4,97
6       nan     nan
7       nan     nan
8       14,83   14,96
9       14,87   15,13
10      14,72   14,83
11      nan     nan
12      nan     nan
13      nan     nan
14      nan     nan
15      24,37   24,35
16      24,29   24,39
17      24,28   24,50
18      24,26   24,41
19      nan     nan

为比较变量“ ref”和“ test”,我需要提取具有滞后作用的平原。可以手动完成:

    grades = []
    for row in df['ref']:
        if row < 5,5:
            grades.append('A')
        elif row < 15,5:
            grades.append('B')
        elif row < 26:
            grades.append('C')
        else:
            grades.append('Failed') 
    df['Result_Ref'] = grades
    df.dropna(inplace=True)

但是该函数应通过滞后(+ -3%)来评估“参考”和“测试”,并自动分配A,B,C,...。结果应如下所示:

   df
Time    ref     test    Result_Ref
sec     Q       Q
3       5,00    4,89    A
4       5,08    5,00    A
5       4,93    4,97    A
8       14,83   14,96   B   
9       14,87   15,13   B   
10      14,72   14,83   B
15      24,37   24,35   C
16      24,29   24,39   C
17      24,28   24,50   C
18      24,26   24,41   C

由于时间和步骤/平原(A,B,C,.... Z)是无限的(最多20个),因此我要搜索的功能应在df中搜索(“ ref”,“ test” )进行下一步(重要)。

when x(i+1)>x(i)), than append('A:Z') 

并将运行变量(1、2、3,..或A,B,C ...)分配到“ Result_Rev”列中。

这是到目前为止的完整图表 full calibration with extracted plains 由于我是python的新手,所以我对这种功能一无所知;)提前谢谢了

1 个答案:

答案 0 :(得分:0)

考虑使用rolling difference

df.dropna(inplace=True)
df['diff'] = df['ref'].diff()    

您可能希望使用离散导数。 只需除以时差即可。

有了这个,您将如何分配一个显示步骤号的运行变量?

请编辑您的问题以反映您当前正在使用的代码, 或理想地发布您自己问题的答案。 (是的,因此,鼓励您回答问题,甚至是您提出的问题!)