我正在从Excel工作表中提取数据并将其存储到数据帧中。我想从数据帧的列创建一个键:值对字典。
例如:[{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]
但是这个逻辑对我不起作用,因为我想获取每两列连续的键:值对。
预期成果:
[{column1.value:column2.value, column3.value:column4.value, column5.value:column6.value}]
提前谢谢。
::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}]
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}