从两列连续的 pandas 数据帧中获取键:值对字典



我正在从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}]

提前谢谢。

您可以使用

::21::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]})

使用 reshapeset_indexto_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}

最新更新