Как объединить два разных кадра данных с небольшой разницей во времени - PullRequest
2 голосов
/ 10 июля 2019

Я рассчитал скользящее среднее за 15 минут из 10 секунд записанных данных. Теперь я хотел объединить данные двух временных рядов (15-минутное среднее и 15-минутное скользящее среднее) из разных файлов в новый файл на основе ближайшей временной отметки.

Данные скользящей средней за 15 минут приведены ниже. Поскольку я вычислил скользящее среднее, первые несколько строк - это NaN:

RecTime NO2_RAW NO2 Ox_RAW  Ox  CO_RAW  CO  SO2_RAW SO2
2019-06-03 00:00:08 NaN NaN NaN NaN NaN NaN NaN NaN
2019-06-03 00:00:18 NaN NaN NaN NaN NaN NaN NaN NaN
2019-06-03 00:00:28 NaN NaN NaN NaN NaN NaN NaN NaN
2019-06-03 00:00:38 NaN NaN NaN NaN NaN NaN NaN NaN

Средние данные за 15 минут показаны ниже:

    Site    Species ReadingDateTime   Value Units   Provisional or Ratified
0   CR9       NO2   2019-03-06 00:00:00 8.2 ug m-3  P
1   CR9       NO2   2019-03-06 00:15:00 7.6 ug m-3  P
2   CR9       NO2   2019-03-06 00:30:00 5.9 ug m-3  P
3   CR9       NO2   2019-03-06 00:45:00 5.1 ug m-3  P
4   CR9       NO2   2019-03-06 01:00:00 5.2 ug m-3  P

Я хочу такой стол:

ReadingDateTime Value   NO2_Raw NO2
2019-06-03 00:00:00         
2019-06-03 00:15:00         
2019-06-03 00:30:00         
2019-06-03 00:45:00         
2019-06-03 01:00:00 

Я попытался сопоставить два кадра данных с ближайшим временем

df3 = pd.merge_asof(df1, df2, left_on = 'RecTime', right_on = 'ReadingDateTime', tolerance=pd.Timedelta('59s'), allow_exact_matches=False)

Я получил новый фрейм данных

    RecTime NO2_RAW NO2 Ox_RAW  Ox  CO_RAW  CO  SO2_RAW SO2 Site    Species ReadingDateTime Value   Units   Provisional or Ratified
0   2019-06-03 00:14:58 1.271111    21.557111   65.188889   170.011111  152.944444  294.478000  -124.600000 -50.129444  NaN NaN NaT NaN NaN NaN
1   2019-06-03 00:15:08 1.294444    21.601778   65.161111   169.955667  152.844444  294.361556  -124.595556 -50.117556  NaN NaN NaT NaN NaN NaN
2   2019-06-03 00:15:18 1.318889    21.648556   65.104444   169.842556  152.750000  294.251556  -124.593333 -50.111667  NaN NaN NaT NaN NaN NaN

Но значения df2 стали NaN. Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 10 июля 2019

Предполагая, что минуты верны, вы можете удалить секунды, и тогда вы сможете объединиться.

df.RecTime.map(lambda x: x.replace(second=0)).

Вы можете создать новый столбец или заменить существующий для объединения.

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