数据框如下所示:
d = {'ID': [1, 2,3],'V':['F','G','H'],'AAA':[0,1,1],'AA':[0,2,2],'A':[0,3,3],'BBB':[0,4,4]}
df2 = pd.DataFrame(data=d)
和字典看起来像这样:
dct ={1:{'F':[2,3,5],'G':[3,5,6],'H':[6,7,8]},
2:{'F':[1,3,5],'G':[8,5,6],'H':[9,7,8]},
3:{'F':[5,3,5],'G':[4,5,6],'H':[10,7,8]}
}
基于'ID'和'V'的值,我可以从字典访问列表,即dct [2] ['G']。如何对此应用合并?
简而言之,我想将特定列表作为一行附加到数据框。
预期结果应如下所示:
op_d = {'ID': [1, 2,3],'V':['F','G','H'],'AAA':[0,1,1],'AA':[0,2,2],'A':[0,3,3],'BBB':[0,4,4],'Q1':[2,8,10],'Q2':[3,5,7],'Q3':[5,6,8]}
output_df = pd.DataFrame(data=op_d )
答案 0 :(得分:5)
您可以将dict
转换为具有MultiIndex的DataFrame,然后合并。
d2 = {(k, k2): v2 for k,v in dct.items() for k2,v2 in v.items()}
u = pd.DataFrame(d2.values(), index=d2.keys())
#u = pd.DataFrame(d2).T
u.columns = [f'Q{i+1}' for i in u.columns]
df2.merge(u, left_on=['ID', 'V'], right_index=True)
# ID V AAA AA A BBB Q1 Q2 Q3
#0 1 F 0 0 0 0 2 3 5
#1 2 G 1 2 3 4 8 5 6
#2 3 H 1 2 3 4 10 7 8