присвойте порядковый номер переменным в python df - PullRequest
1 голос
/ 07 апреля 2019

оценка данных калибровки

Для калибровки системы мне нужно сравнить эталонные ('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)

Но функция должна оценивать 'ref' и 'test' по гистерезису (+ -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, я понятия не имею о такой функции;) Спасибо заранее

1 Ответ

0 голосов
/ 07 апреля 2019

Рассмотрите возможность использования скользящей разности :

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

Вы можете предпочесть дискретную производную.Просто разделите на разницу во времени.

Имея это в виду, как бы вы присвоили рабочую переменную, показывающую номер шага?

Пожалуйста, отредактируйте свой вопрос, чтобы отразить код, с которым вы в данный момент работаетеИли, в идеале, опубликовать ответ на свой вопрос.(Да, SO призывает ответить на вопросы, даже на вопрос, который вы задали!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...