Я кодирую только время от времени, и на данный момент я супер базовый. Может быть, это глупый вопрос, но сейчас я слишком сильно застрял.
Фон
У меня есть функция (get_profiles), которая строит точки каждые 5 м вдоль одной линии трансекты (длиной 100 м) и извлекает высоту (из геотифа).
Аргументы следующие:
Результатом для одной линии разреза является фрейм данных, как на картинке, что я и ожидал, и мне это нравится!
Однако большая проблема возникает, когда я повторяю функцию по 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, точно так же, как результат 1 итерации (20 строк), но со всеми фрагментами tr_id по 20 строк каждый, выровненными и без заголовков?






Если на выходе получается 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!