Добавление элементов в пустой фрейм данных в пандах - PullRequest
1 голос
/ 10 апреля 2019

Я новичок в Python и у меня есть основной вопрос.У меня есть пустой DataFrame Resulttable со столбцами AB и C, который я хочу продолжать заполнять ответами на некоторые вычисления, которые я выполняю в цикле, представленном индексом цикла n.НапримерЯ хочу сохранить значение 12 в n-й строке столбца A, 35 в n-й строке столбца B и т. Д. Для всего диапазона n.

Я пробовал что-то вроде

Resulttable['A'].iloc[n] = 12
Resulttable['B'].iloc[n] = 35

Я получаю сообщение об ошибке одного позиционного индексатора выходит за пределы первого значения n, n = 0.Как мне решить это?Спасибо!

Ответы [ 2 ]

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

Нет способа заполнить пустой фрейм данных таким образом. Поскольку в вашем фрейме данных нет записей, что-то вроде

Resulttable['A'].iloc[n]

всегда приведет к ошибке IndexError, которую вы описали. Вместо того, чтобы пытаться заполнить фрейм данных таким образом, вам лучше сохранить результаты вашего цикла в списке, который вы можете назвать «result_list». Затем вы можете создать фрейм данных, используя ваш список следующим образом:

Resulttable= pd.DataFrame({"A": result_list})

Если у вас есть еще один список результатов, который вы хотите сохранить в другом столбце вашего фрейма данных, скажем, result_list2, то вы можете создать свой фрейм данных следующим образом:

Resulttable= pd.DataFrame({"A": result_list, "B": result_list2})

Если «Таблица результатов» уже создана, вы можете добавить столбец B следующим образом:

Resulttable["B"] = result_list2

Я надеюсь, что смогу вам помочь.

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

Вы можете сначала создать пустой фрейм данных pandas, а затем добавлять строки одну за другой по мере вычисления.В вашем диапазоне вам нужно указать одно значение выше максимального значения, которое вы хотите, т.е. диапазон (0, 13), если вы хотите выполнить итерацию для 0-12.

import pandas as pd

df = pd.DataFrame([], columns=["A", "B", "C"])
for i in range(0, 13):
    x = i**1
    y = i**2
    z = i**3
    df_tmp = pd.DataFrame([(x, y, z)], columns=["A", "B", "C"])
    df = df.append(df_tmp)

df = df.reset_index()

Это приведет к созданию DataFrame следующим образом:

df.head()
index   A   B   C
0   0   0   0   0
1   0   1   1   1
2   0   2   4   8
3   0   3   9   27
4   0   4   16  64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...