Объединение перекрывающихся DataFrames в пандах - PullRequest
0 голосов
/ 31 января 2019

У меня довольно большое количество фреймов данных, каждый из которых содержит от 6000 до 12000 записей.Они отсортированы по отметке времени, а некоторые, к сожалению, перекрываются.Их нужно объединить в один очень большой фрейм данных, отбрасывая дублированные записи временных отметок.

Я пробовал объединять, объединять и добавлять, но ни один из них не очень помог.У меня такое ощущение, что мне не хватает важной детали в документации, но я не могу найти свою ошибку.

objs = [block.dataframe() for block in plot.blocks.all()]
result = pd.concat(objs, sort=True)

Все фреймы данных имеют одинаковую структуру

У меня есть два конкретных фрейма данныхкоторые перекрываются со следующими интервалами: objs[3] -> [20:00:00, 21:59:59] и objs[4] -> [20:43:27, 23:59:59].После выполнения кода выше (который я тестирую на 7 фреймах данных) я получаю следующую ошибку:

"KeyError:
['2018-12-18 15:06:20.484' '2018-12-18 15:06:21.561'\n '2018-12-18 15:06:22.638' 
...
'2018-12-18 15:59:57.553'\n '2018-12-18 15:59:58.661' '2018-12-18 15:59:59.753'] 
not in index"

Эти метки времени относятся к самому первому фрейму данных (из этих 7 фреймов данных).Обычно я могу читать ошибки довольно хорошо, но эта не очень помогает мне.

Английский не мой родной язык, поэтому это может быть простая ошибка интерпретации, которую я имею.

[Редактировать]

У меня есть следующие 2 csv-файла (Я отформатировал их во что-то «более понятное», потому что они огромные)

csv_file_4

0;1;2;3;4;5; ... 
0;2018-12-18 20:00:00.895;4270;558000.0;13.53336;33.599998; ...
1;2018-12-18 20:00:02.003;4270;552000.0;13.516693;34.0; ...
...
2387;2018-12-18 20:43:27.515;4270;550000.0;12.050023;31.199999; ...
...
6591;2018-12-18 21:59:58.313;4270;562000.0;12.550024;32.799999; ...
6592;2018-12-18 21:59:59.421;4270;559000.0;12.400024;32.799999; ...

csv_file_5

0;1;2;3;4;5; ...
0;2018-12-18 20:43:27.515;4270;550000.0;12.050023;31.199999; ...
1;2018-12-18 20:43:28.607;4270;553000.0;12.050023;31.199999; ...
...
10797;2018-12-18 23:59:57.917;4270;558000.0;12.116691000000001;31.199999; ...
10798;2018-12-18 23:59:59.025;4270;558000.0;12.100023;30.799999; ...

Как описано выше, первый файлначинается с 20:00:00 и заканчивается 21:59:59, а вторая начинается с 20:43:27 и заканчивается 23: 59: 59.

Как видно из первого файла, первая записьиз второго файла присутствует в 2387-й строке.

Я читаю эти CSV-файлы с пандами, которые преобразует их в DataFrames.Чего я хочу добиться, так это иметь один DataFrame, содержащий все записи из обоих файлов, но без дубликатов.

Редактирование файлов и удаление дубликатов вручную, к сожалению, не вариант.

...