使用LOC更新熊猫中的Mutliindex以指定索引值?

时间:2020-05-27 18:38:59

标签: python pandas

我正在尝试更新或将行插入N索引熊猫数据框。

def _update_dataframe(map, row_dict):
    filter_list = []
    # Get indexes from row_dict. These are filtered out
    for index in map.index.names:
        if index in row_dict:
            filter_list.append(list(row_dict.keys()).index(index))
    if not filter_list:
        raise ValueError("Row_Dict does not contain map index values")

    if len(map.index.names) == len(filter_list):
        col = list(row_dict.keys())
        data = list(row_dict.values())
        map.loc[*[data[i] for i in filter_list],
                [i for i in col if col.index(i) not in filter_list]] = \
            [i for i in data if data.index(i) not in filter_list]


row_dict = {
    "index1": 12345
    "index2": 52352352
    "column1": "foo"
    "column2": "bar"
}

基本上,我正在从字典中过滤出索引值,并尝试将其解压缩为参数以指定dataframe.loc的索引

列表理解如下:

map.loc[12345, 52352352, ["column1", "column2"]] = ["foo", "bar"]

不幸的是,解压缩列表导致了我的麻烦,而Python告诉我这是一个语法错误,我不知道数据框有多少个索引。我还需要保留这些值,并使用数组中传递的索引值,因为它们对应于数据库中的主键。

编辑以使数据框可能具有多余的列的情况复杂化,这些列应具有空值

0 个答案:

没有答案