Как объединить две панели данных панд с разной плотностью временных меток? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть несколько панд данных. df1,df2,df3... Каждая из них содержит столбец временных меток и столбец соответствующих значений.Например:

df1:

2015-01-01T15:41:10.500Z, 9239.337890625
2015-01-01T15:41:50.543Z, 9539.337890625
2015-01-01T15:42:30.600Z, 8957.0458984375
2015-01-01T15:43:00.606Z, 8237.0458984375

df2:

2015-01-01T01:41:43.900Z, 67.58499908447266
2015-01-01T01:42:43.918Z, 67.58499908447266
2015-01-01T02:43:37.800Z, 67.58200073242189
2015-01-01T02:44:37.825Z, 67.58200073242189

Я не уверен, правильно ли я ввел их в слова, поэтому мне нужно объединить ихфайлы данных в один, где будет только один столбец отметки времени, а другие столбцы будут содержать значения измерений.Я думаю о чем-то, что могло бы взять метку времени с наименьшим приращением и вставить другие строки в их соответствующие места.Для значения метки времени, которое содержит одно измерение, но не другое, оно поместит Nan или оставит его пустым.Ожидаемый результат будет примерно таким:

timestamp                 value1             value2 ...
2015-01-01T15:41:10.500Z, 9239.337890625 
2015-01-01T01:41:43.900Z,                    67.58499908447266
2015-01-01T15:41:50.543Z, 9539.337890625
2015-01-01T15:42:30.600Z, 8957.0458984375
2015-01-01T01:42:43.918Z,                    67.58499908447266
2015-01-01T15:43:00.606Z, 8237.0458984375

Так как я могу это сделать?Любые предложения или комментарии высоко ценятся.

1 Ответ

0 голосов
/ 22 февраля 2019

Если временные метки являются собственным столбцом,

                    timestamp            value1
0    2015-01-01T15:41:10.500Z    9239.337890625
1    2015-01-01T15:41:50.543Z    9539.337890625
2    2015-01-01T15:42:30.600Z    8957.0458984375
3    2015-01-01T15:43:00.606Z    8237.0458984375

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

df_all = pd.concat([df1, df2, df3, ...], ignore_index = True)
df_all.sort_values(by='timestamp', inplace = True)

ignore_index=True говорит pandas забыть индексирование в исходных фреймах данных и создать новые индексына основе порядка в новом кадре данных.

Если временные метки являются индексами,

                                     value1
2015-01-01T15:41:10.500Z    9239.337890625
2015-01-01T15:41:50.543Z    9539.337890625
2015-01-01T15:42:30.600Z    8957.0458984375
2015-01-01T15:43:00.606Z    8237.0458984375

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

df_all = pd.concat([df1, df2, df3, ...])
df_all.sort_index(inplace = True)

sort_values и sort_index упорядочат временные метки в хронологическом порядке.

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