我正在尝试更新或将行插入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告诉我这是一个语法错误,我不知道数据框有多少个索引。我还需要保留这些值,并使用数组中传递的索引值,因为它们对应于数据库中的主键。
编辑以使数据框可能具有多余的列的情况复杂化,这些列应具有空值