我正在从Excel工作表中提取数据并将其存储到数据框中。我想从数据框的列中创建一个key:value对字典。
例如:[{key=column1 : value = column2, key = column3 : value=column4 }]
,依此类推,直到最后一列。
这是我正在使用的示例数据:[1]:https://i.stack.imgur.com/JrurH.png
我知道逻辑df.set_index('column1').T.to_dict('records')[0]
但是这种逻辑对我不起作用,因为我想获取每两连续列的key:value对。
预期结果:
[{column1.value:column2.value, column3.value:column4.value, column5.value:column6.value}]
谢谢。
答案 0 :(得分:2)
您可以使用::2
和1::2
dict(zip(df.iloc[:, ::2].to_numpy().ravel(), df.iloc[:, 1::2].to_numpy().ravel()))
{'A': 5,
'B': 10,
'C': 15,
'D': 20,
'E': 25,
'F': 30,
'G': 35,
'H': 40,
'I': 45}
或者如果每行一个:
[dict(zip(x[0].tolist(), x[1].tolist())) for x in zip(df.iloc[:, ::2].to_numpy(), df.iloc[:, 1::2].to_numpy())]
#[{'A': 5, 'D': 20, 'G': 35},
# {'B': 10, 'E': 25, 'H': 40},
# {'C': 15, 'F': 30, 'I': 45}]
答案 1 :(得分:1)
IIUC,请尝试以下操作:
设置数据框:
df = pd.DataFrame({'Column1':[*'ABC'],
'Column2':[5,10,15],
'Column3':[*'DEF'],
'Column4':[20,25,30],
'Column5':[*'GHI'],
'Column6':[35,40,45]})
使用reshape
,set_index
和to_dict
:
pd.DataFrame(df.values.reshape(-1,2)).set_index(0).to_dict(orient='dict')[1]
输出:
{'A': 5,
'D': 20,
'G': 35,
'B': 10,
'E': 25,
'H': 40,
'C': 15,
'F': 30,
'I': 45}