Как обрабатывать определенные значения очень специфическим образом в кадре данных панд? - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть датафрейм панд, который выглядит следующим образом:

     TIMESTAMP              TAIR
0    2011-06-01 00:00:00    24.3
1    2011-06-01 00:05:00    24.5
2    2011-06-01 00:10:00    24.2
3    2011-06-01 00:15:00    24.1
4    2011-06-01 00:20:00    24.2
5    2011-06-01 00:25:00    -999
6    2011-06-01 00:30:00    15.1
7    2011-06-01 00:35:00    -999
8    2011-06-01 00:40:00    13.9
9    2011-06-01 00:45:00    13.7

Мне нужно обработать пропущенные значения (все, что меньше -990), заменив его предыдущим значением. Итак, если я сделаю это правильно, новый фрейм данных будет выглядеть так:

     TIMESTAMP              TEMP
0    2011-06-01 00:00:00    24.3
1    2011-06-01 00:05:00    24.5
2    2011-06-01 00:10:00    24.2
3    2011-06-01 00:15:00    24.1
4    2011-06-01 00:20:00    24.2
5    2011-06-01 00:25:00    24.2
6    2011-06-01 00:30:00    15.1
7    2011-06-01 00:35:00    15.1
8    2011-06-01 00:40:00    13.9
9    2011-06-01 00:45:00    13.7

Метка времени - это тип данных datetime.

Как я это делаю сейчас с помощью цикла for, например:

for index, row in df.iterrows():
    if row['TAIR'] < -990:
        data.loc[index, 'TAIR'] = data.loc[index-1, 'TAIR']

Есть ли лучший / более быстрый способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Заменить на np.nan и использовать ffill()

df.loc[df.TAIR <= -990, 'TAIR'] = np.nan
df.ffill()
0 голосов
/ 10 сентября 2018

Использование mask и ffill:

df.assign(TAIR=df.TAIR.mask(df.TAIR.le(-999)).ffill())

             TIMESTAMP  TAIR
0  2011-06-01 00:00:00  24.3
1  2011-06-01 00:05:00  24.5
2  2011-06-01 00:10:00  24.2
3  2011-06-01 00:15:00  24.1
4  2011-06-01 00:20:00  24.2
5  2011-06-01 00:25:00  24.2
6  2011-06-01 00:30:00  15.1
7  2011-06-01 00:35:00  15.1
8  2011-06-01 00:40:00  13.9
9  2011-06-01 00:45:00  13.7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...