Pandas Dataframes объединяются через итерации. Как избежать списков и строк заголовков - PullRequest
0 голосов
/ 07 ноября 2018

Я кодирую только время от времени, и на данный момент я очень прост. Возможно, это глупый вопрос, но теперь он слишком сильно застрял.

Фон

У меня есть функция (get_profiles), которая строит точки каждые 5 м вдоль одной линии разреза (длиной 100 м) и извлекает высоту (из геотипа). Аргументы:

  • дм (цифровая модель поверхности)
  • transect_file (геопакет, содержит много строк строк с разными transect_ID)
  • transect_id (int, извлеченный из файла transect_file)
  • шаг (int, количество метров для извлечения высоты вдоль линий разреза)

Вывод для одной строки разреза - это кадр данных, как на картинке, что я и ожидал, и мне это нравится!

enter image description here

Тем не менее, большая проблема возникает, когда я повторяю функцию над transect_ids (у transect_files есть 10 Shapely LineStrings), например:

tr_list = np.arange(1,transect_file.shape[0]-1)  
geodb_transects= []
for i in tr_list:
        temp=get_profiles(dsm,transect_file,i,5)
        geodb_transects.append(temp)

Я получаю список. Возможно, здесь ошибка, но я не знаю, как это сделать по-другому.

 type(geodb_transects)
 output:list

И, что еще хуже, я получаю заголовки (distance, z, tr_id, date) каждый раз, когда начинается новая итерация.

enter image description here

Как получить чистый кадр данных pandas, точно так же, как вывод 1 итерации (20 строк), но с выравниванием всех кусков tr_id по 20 строк каждый без заголовков?

1 Ответ

0 голосов
/ 07 ноября 2018

Если вы выводите DataFrame, то вы просто хотите объединить инкрементный DataFrame в некоторый растущий DataFrame.

Это не самый эффективный, но что-то вроде

import pandas

df = pandas.DataFrame()
for i in range(7) :
    df = df.concat( df_ret_func(i))

Вам также может быть интересна функция from_records , если у вас есть список элементов, которые являются записями одинаковой формы и могут быть преобразованы в строки DataFrame.

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