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

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

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

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

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

Но если элемент не существует в кадре данных, мне нужно создать новую строку для кадра данных и назначитьзначение для этой новой строки X столбца.Допустим, я хочу добавить значение 2 к ПУНКТУ 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"

1 Ответ

0 голосов
/ 21 сентября 2018

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

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

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

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