首页 > 解决方案 > 在python df中为变量分配一个运行编号

问题描述

评估校准数据

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

    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”列中。

这是到目前为止的完整图表, 使用提取的平原进行完全校准 因为我对python很陌生,所以我对这样的函数一无所知;)提前谢谢

标签: pythonpython-3.xpandasdataframe

解决方案


考虑使用滚动差异

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

您可能更喜欢离散导数。只需除以时差。

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

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


推荐阅读