Столбец NaN, созданный при объединении ряда в информационный кадр - PullRequest
0 голосов
/ 01 апреля 2019

Я создал выходную переменную 'a = pd.Series ()', затем запустил ряд симуляций, используя цикл for, который добавляет результаты симуляции, временно сохраненные в 'x', в 'a' в последовательные столбцы, каждый из которых переименован, чтобы совпадать с номером моделирования, начиная с нулевой позиции, используя следующий код:

a = pandas.concat([a, x.rename(sim_count)], axis=1)

По какой-то причине результирующий фрейм данных содержит столбец значений «NaN» слева от моего первого столбца имитируемых результатов, от которого я не могу избавиться, как показано ниже (пример показывает результаты трех симуляций):

    0         0         1         2

0 NaN  0.136799  0.135325 -0.174987

1 NaN -0.010517  0.108798  0.003726

2 NaN  0.116757  0.030352  0.077443

3 NaN  0.148347  0.045051  0.211610

4 NaN  0.014309  0.074419  0.109129

Есть идеи, как предотвратить создание этого столбца значений NaN?

1 Ответ

0 голосов
/ 01 апреля 2019

По сути, создавая выходную переменную с помощью pd.Series (), вы создаете пустой набор данных.Это переносится в конкатенации, причем размер пустого набора данных определяется как тот же размер (ну, то же число строк), что и для x [sim_count].Единственный способ, которым Python / Pandas знает, как представить эту «пустую» серию, - это использовать серию значений NaN.Когда вы объединяете, вы фактически говорите: я хочу добавить мой новый фрейм данных / серию в «пустую» серию ... и пустая серия просто получает NaN.

Более эффективный способ сделать это - назначить«a» к фрейму данных, затем объедините.

a = pd.DataFrame()
a = pandas.concat([a, x.rename(sim_count)], axis=1)

Вы можете спросить себя, почему это работает, и с помощью pd.Series () вынуждает столбец NaN.Насколько я понимаю, dataframe создает пустое место в памяти для добавляемых данных (т.е. вы помещаете ваши новые данные в пустой dataframe), тогда как когда вы делаете pd.concat ([pd.Series (), x.rename (sim_count)], axis1) вы говорите пандам, что пустой ряд (pd.Series ()) важен и должен быть сохранен, и что новые данные должны быть добавлены ONTO "a".Отсюда и столбец NaNs.

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