如何为现有的熊猫数据框添加新的索引行?

时间:2018-09-20 21:22:46

标签: python pandas dataframe

我有一个Python Pandas 2D数据框,其中ITEM列是索引。

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

我有一个为脚本读取的新jSON创建新列的过程。如果此jSON响应中包含的项目已存在于数据框中,则将该值分配给现有的ITEM和新列。假设我想将ITEM-1的值3添加到新列C。

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

但是,如果该项目在数据框中不存在,则需要为该数据帧创建一个新行,并为此新行X列分配值。假设我想将ITEM-4(新项目)的值2添加到新列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 :(得分:0)

尝试一下:

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

通过从[]中删除element['name']