Как заполнить () все столбцы информационного кадра из одной строки другого информационного кадра с идентичной структурой - PullRequest
0 голосов
/ 30 мая 2019

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

Как обучаем, так и тестируемфреймы данных имеют идентичную структуру:

  • PeriodIndex с ежедневными сегментами
  • n количество столбцов, которые представляют наблюдаемые значения в этих временных интервалах, например, Продажи, Цена и т. д.

Теперь я хочу построить yhat_df, в котором хранятся прогнозные значения для каждого из столбцов.В «наивном» случае значения yhat_df столбцов являются просто последним наблюдаемым значением набора обучающих данных.

Итак, я собираюсь построить yhat_df, как показано ниже:

import pandas as pd
yhat_df = pd.DataFrame().reindex_like(test_df)
yhat_df[train_df.columns[0]].fillna(train_df.tail(1).values[0][0], inplace=True)
yhat_df(train_df.columns[1]].fillna(train_df.tail(1).values[0][1], inplace=True)

Это выглядит какработать, и так как у меня есть только два столбца, дополнительная печать является терпимой.

Мне было интересно, есть ли более простой способ, особенно тот, который не требует, чтобы я переходил столбец за столбцом.

Я попробовал следующее, но это просто правильно заполняет значения столбца, где совпадают значения PeriodIndex.Кажется, fillna() пытается сделать join() сортировок внутри Индекса:

yhat_df.fillna(train_df.tail(1), inplace=True)

Если бы я мог найти способ для fillna() игнорировать индекс, возможно, это сработало бы?

1 Ответ

0 голосов
/ 30 мая 2019

вы можете использовать fillna со словарем, чтобы заполнить каждый столбец различным значением, поэтому я думаю:

yhat_df = yhat_df.fillna(train_df.tail(1).to_dict('records')[0])

должно работать, но если я хорошо понимаю, что вы делаете, то даже напрямую создайте фрейм данных с помощью:

yhat_df = pd.DataFrame(train_df.tail(1).to_dict('records')[0], 
                       index = test_df.index, columns = test_df.columns)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...