Как добавить новую строку индекса для существующего кадра данных панд?

1

У меня есть 2D-фрейм Python Pandas 2D, где столбец ITEM является индексом.

ITEM   | A | B
ITEM-1 | 1 | 3
ITEM-2 | 1 | 2
ITEM-3 | 2 | 2

У меня есть процесс создания нового столбца для нового jSON, который читает скрипт. Если элементы, содержащиеся в этом ответе jSON, уже существуют в фреймворке данных, значение присваивается существующему ITEM и новому столбцу. Скажем, я хочу добавить значение 3 в ITEM-1 в новый столбец C.

ITEM   | A | B | C
ITEM-1 | 1 | 3 | 1
ITEM-2 | 1 | 2 |
ITEM-3 | 2 | 2 |

Но если элемент не существует в фрейме данных, мне нужно создать новую строку для фрейма данных и назначить значение для этой новой строки X столбца. Скажем, я хочу добавить значение 2 в ITEM-4 (новый элемент) в новый столбец C (ЗДЕСЬ МОЯ ЧАСТЬ).

ITEM   | A | B | C
ITEM-1 | 1 | 3 | 1
ITEM-2 | 1 | 2 |
ITEM-3 | 2 | 2 |
ITEM-4 |   |   | 1

Этот процесс является динамическим, считывая ответ jSON. Я пытаюсь сделать это, как образец ниже, но это не правильно.

#get information of resultID
url = '<URL INVOKED>'
respResult = requests.get(url,headers=headers).json()

#add a new column to the dataframe
dataframe[respResult['name']] = ""

#get elements of the result
url = '<URL INVOKED>'
respElements = requests.get(url,headers=headers).json()

#populate the dataframe with the elements and their values    

for element in respElements:

    #get the values of the element
    url = '<URL INVOKED'
    respElementValues = requests.get(url,headers=headers).json()

    if(element['name'] in df.index):
        dataframe.loc[[element['name']],[respResult['name']]] = respElementValues['valueElement']
    else:
        #THIS BLOCK DOES NOT WORK
        dataframe.loc[len(dataframe)] = element['name'];
        dataframe.loc[[element['name']],[respResult['name']]] = respElementValues['valueElement'] #here the script returns the error "return_values_from_object(indexer) KeyError: ['ITEM-4'] not in index"
  • 0
    Когда вы говорите «не работает», каковы детали? Вызывает ли это ошибку (если это так, рассмотрите возможность добавления ошибки в свой вопрос). Если он работает неправильно, какой результат вы получаете против ожидаемого результата?
  • 0
    @payne, это последняя часть ошибки: 1267, если mask.any (): 1268 повысить KeyError ('{mask} not in index' -> 1269 .format (mask = objarr [mask])) 1270 1271 вернуть _values_from_object (indexer) KeyError: "['ITEM-4'] нет в индексе"
Показать ещё 4 комментария
Теги:
pandas
dataframe

1 ответ

0

Попробуй это:

dataframe.loc[element['name'],respResult['name']] = respElementValues['valueElement']

Удалив [] из element['name']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню