更新一个嵌套字典,它的根键匹配某个数据框的索引与该数据框的值



我有一个嵌套的字典,它是统一的(即每个第二级字典将有相同的键)。

{
'0': {'a': 1, 'b': 2},
'1': {'a': 3, 'b': 4},
'2': {'a': 5, 'b': 6},
}

和下面的数据帧

c
0   9 
1   6
2   4

是否有一种方法(没有for循环)来更新/映射字典/键值,以便我得到

{
'0': {'a': 1, 'b': 2, 'c': 9},
'1': {'a': 3, 'b': 4, 'c': 6},
'2': {'a': 5, 'b': 6, 'c': 4},
}

试试这个

# input
my_dict = {
'0': {'a': 1, 'b': 2},
'1': {'a': 3, 'b': 4},
'2': {'a': 5, 'b': 6},
}
my_df = pd.DataFrame({'c': [9, 6, 4]})
# build df from my_dict
df1 = pd.DataFrame.from_dict(my_dict, orient='index')
# append my_df as a column to df1
df1['c'] = my_df.values
# get dictionary
df1.to_dict('index')

但是一个简单的循环在这里更有效。1

for d, c in zip(my_dict.values(), my_df['c']):
d['c'] = c
my_dict
{'0': {'a': 1, 'b': 2, 'c': 9},
'1': {'a': 3, 'b': 4, 'c': 6},
'2': {'a': 5, 'b': 6, 'c': 4}}

1:构造一个数据框架是很昂贵的,所以除非你想要一个数据框架(可能以后还要做其他的计算),否则为这样的任务构造一个数据框架是不值得的。

相关内容

最新更新