Как найти условное скользящее среднее в кадре данных? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть датафрейм как:

st      ft  value
10      12       10
9       13       20
8       9        30
7       8        40
6       7        50
5       8        60
4       5        70
3       4        80
2       4        90
1       2       100

Код для создания указанного выше Фрейма данных:

df = pd.DataFrame ([[10, 9, 8, 7, 6, 5,4, 3, 2, 1], [12, 13, 9, 8, 7, 8, 5, 4,4,2], [10, 20, 30, 40, 50, 60, 70, 80, 90,100]]). T.rename (столбцы = {0: "st", 1: "ft", 2: "значение"})

В фрейме данных есть три столбца st (это начало эксперимента)время), футы (время окончания эксперимента) и значение (наблюдаемое значение).Время окончания> время начала.Я хочу создать новый столбец с предыдущим наблюдаемым значением.Но условие получения последнего наблюдаемого значения - время окончания (последняя строка) <= время начала (текущая строка), чтобы время окончания было максимальным. </p>

При применении вышеуказанной логики вывод должен выглядеть следующим образом -

st        ft    value   last_observed_value
10        12    10         30.0
9         13    20         30.0
8         9     30         40.0
7         8     40         50.0
6         7     50         70.0
5         8     60         70.0
4         5     70         80.0
3         4     80        100.0
2         4     90        100.0
1         2     100       None

Как мы можем сделать это питонским способом?

1 Ответ

0 голосов
/ 22 февраля 2019
df = pd.DataFrame([[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [12, 13, 9, 8, 7, 8, 5, 4,4,2], [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]]).T.rename(columns={0:"st", 1:"ft", 2:"value"})

df['last_observed_value'] =  -10000
for i in range(df.st.size - 1):
    for j in range(i,df.st.size - 1):
        if(df.st[j]< df.ft[j+1]):
            df['last_observed_value'][i] =  df.value[j+1]
        if(df.st[j] == df.ft[j+1]):
            df['last_observed_value'][i] =  df.value[j+1]
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...