Pandas Dataframes, объединяющие итерации. Как избежать списков и строк заголовков

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

Фон

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

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

Результатом для одной линии разреза является фрейм данных, как на картинке, что я и ожидал, и мне это нравится!

Pandas Dataframes, объединяющие итерации. Как избежать списков и строк заголовков

Однако большая проблема возникает, когда я повторяю функцию по 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) каждый раз, когда начинается новая итерация.

Pandas Dataframes, объединяющие итерации. Как избежать списков и строк заголовков

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

import pandas

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

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

Большое спасибо @jxramos! Думаю, я использовал неправильную формулу List и .append, а правильную - Dataframe .concat!

Nick Pucino 09.11.2018 02:21

Другие вопросы по теме